{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Math - Differential Calculus**\n",
    "\n",
    "Calculus is the study of continuous change. It has two major subfields: *differential calculus*, which studies the rate of change of functions, and *integral calculus*, which studies the area under the curve. In this notebook, we will discuss the former.\n",
    "\n",
    "*Differential calculus is at the core of Deep Learning, so it is important to understand what derivatives and gradients are, how they are used in Deep Learning, and understand what their limitations are.*\n",
    "\n",
    "**Note:** the code in this notebook is only used to create figures and animations. You do not need to understand how it works (although I did my best to make it clear, in case you are interested)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<table align=\"left\">\n",
    "  <td>\n",
    "    <a href=\"https://colab.research.google.com/github/ageron/handson-ml2/blob/master/math_differential_calculus.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>\n",
    "  </td>\n",
    "  <td>\n",
    "    <a target=\"_blank\" href=\"https://kaggle.com/kernels/welcome?src=https://github.com/ageron/handson-ml2/blob/master/math_differential_calculus.ipynb\"><img src=\"https://kaggle.com/static/images/open-in-kaggle.svg\" /></a>\n",
    "  </td>\n",
    "</table>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ChS5BE53XXYr"
   },
   "source": [
    "# Slope of a straight line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "cellView": "form",
    "colab": {},
    "colab_type": "code",
    "id": "QXiG4ZiHvf_5"
   },
   "outputs": [],
   "source": [
    "#@title\n",
    "%matplotlib inline\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# To get smooth animations\n",
    "import matplotlib.animation as animation\n",
    "mpl.rc('animation', html='jshtml')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "AA7V2hteveV4"
   },
   "source": [
    "What is the slope of the following line?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 300
    },
    "colab_type": "code",
    "id": "m9h_md3TvVUh",
    "outputId": "1c00aae1-f836-4335-af04-079ece1074c5"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "def get_AB_line(A_pos, B_pos, x_min=-1000, x_max=+1000):\n",
    "    rise = B_pos[1] - A_pos[1]\n",
    "    run = B_pos[0] - A_pos[0]\n",
    "    slope = rise / run\n",
    "    offset = A_pos[1] - slope * A_pos[0]\n",
    "    return [x_min, x_max], [x_min * slope + offset, x_max * slope + offset]\n",
    "\n",
    "def plot_AB_line(A_pos, B_pos, A_name=\"A\", B_name=\"B\"):\n",
    "    for point, name in ((A_pos, A_name), (B_pos, B_name)):\n",
    "        plt.plot(point[0], point[1], \"bo\")\n",
    "        plt.text(point[0] - 0.35, point[1], name, fontsize=14)\n",
    "    xs, ys = get_AB_line(A_pos, B_pos)\n",
    "    plt.plot(xs, ys)\n",
    "\n",
    "def plot_rise_over_run(A_pos, B_pos):\n",
    "    plt.plot([A_pos[0], B_pos[0]], [A_pos[1], A_pos[1]], \"k--\")\n",
    "    plt.text((A_pos[0] + B_pos[0]) / 2, A_pos[1] - 0.4, \"run\", fontsize=14)\n",
    "    plt.plot([B_pos[0], B_pos[0]], [A_pos[1], B_pos[1]], \"k--\")\n",
    "    plt.text(B_pos[0] + 0.2, (A_pos[1] + B_pos[1]) / 2, \"rise\", fontsize=14)\n",
    "\n",
    "def show(axis=\"equal\", ax=None, title=None, xlabel=\"$x$\", ylabel=\"$y$\"):\n",
    "    ax = ax or plt.gca()\n",
    "    ax.axis(axis)\n",
    "    ax.grid()\n",
    "    ax.set_title(title, fontsize=14)\n",
    "    ax.set_xlabel(xlabel, fontsize=14)\n",
    "    ax.set_ylabel(ylabel, fontsize=14, rotation=0)\n",
    "    ax.axhline(y=0, color='k')\n",
    "    ax.axvline(x=0, color='k')\n",
    "\n",
    "A_pos = np.array([1, 1])\n",
    "B_pos = np.array([7, 4])\n",
    "plot_AB_line(A_pos, B_pos)\n",
    "plot_rise_over_run(A_pos, B_pos)\n",
    "show([0, 8.4, 0, 5.5], title=\"Slope = rise / run\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ya-lEC7O5IHX"
   },
   "source": [
    "As you probably know, the slope of a (non-vertical) straight line can be calculated by taking any two points $\\mathrm{A}$ and $\\mathrm{B}$ on the line, and computing the \"rise over run\":\n",
    "\n",
    "$slope = \\dfrac{rise}{run} = \\dfrac{\\Delta y}{\\Delta x} = \\dfrac{y_\\mathrm{B} - y_\\mathrm{A}}{x_\\mathrm{B} - x_\\mathrm{A}}$\n",
    "\n",
    "\n",
    "In this example, the rise is 3, and the run is 6, so the slope is 3/6 = 0.5."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mKJGxZIAXikF"
   },
   "source": [
    "# Defining the slope of a curve"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "gcb7eqkmGGXf"
   },
   "source": [
    "But what if you want to know the slope of something else than a straight line? For example, let's consider the curve defined by $y = f(x) = x^2$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 305
    },
    "colab_type": "code",
    "id": "U6T3WLcsRZuh",
    "outputId": "aae68e5b-77d2-4cf0-a0da-015b14daea25"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "xs = np.linspace(-2.1, 2.1, 500)\n",
    "ys = xs**2\n",
    "plt.plot(xs, ys)\n",
    "\n",
    "plt.plot([0, 0], [0, 3], \"k--\")\n",
    "plt.arrow(-1.4, 2.5, 0.5, -1.3, head_width=0.1)\n",
    "plt.arrow(0.85, 1.05, 0.5, 1.3, head_width=0.1)\n",
    "show([-2.1, 2.1, 0, 2.8], title=\"Slope of the curve $y = x^2$\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "eCBsOOBAG1vh"
   },
   "source": [
    "Obviously, the slope varies: on the left (i.e., when $x<0$), the slope is negative (i.e., when we move from left to right, the curve goes down), while on the right (i.e., when $x>0$) the slope is positive (i.e., when we move from left to right, the curve goes up). At the point $x=0$, the slope is equal to 0 (i.e., the curve is locally flat). The fact that the slope is 0 when we reach a minimum (or indeed a maximum) is crucially important, and we will come back to it later."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "4qCXg9nQSp6S"
   },
   "source": [
    "How can we put numbers on these intuitions? Well, say we want to estimate the slope of the curve at a point $\\mathrm{A}$, we can do this by taking another point $\\mathrm{B}$ on the curve, not too far away, and then computing the slope between these two points:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 382
    },
    "colab_type": "code",
    "id": "39VP85dfYwLW",
    "outputId": "a614f61c-26bf-4380-bf0a-b6d3541e891a"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_imgb009e807ff7f4da6bfedc9c8e64865bd\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_sliderb009e807ff7f4da6bfedc9c8e64865bd\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"animb009e807ff7f4da6bfedc9c8e64865bd.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animb009e807ff7f4da6bfedc9c8e64865bd.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_selectb009e807ff7f4da6bfedc9c8e64865bd\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_b009e807ff7f4da6bfedc9c8e64865bd\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_b009e807ff7f4da6bfedc9c8e64865bd\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_b009e807ff7f4da6bfedc9c8e64865bd\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_b009e807ff7f4da6bfedc9c8e64865bd\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_b009e807ff7f4da6bfedc9c8e64865bd\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_b009e807ff7f4da6bfedc9c8e64865bd\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_imgb009e807ff7f4da6bfedc9c8e64865bd\";\n",
       "    var slider_id = \"_anim_sliderb009e807ff7f4da6bfedc9c8e64865bd\";\n",
       "    var loop_select_id = \"_anim_loop_selectb009e807ff7f4da6bfedc9c8e64865bd\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "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\\\n",
       "IYQQVun/AUrgnKx9Gj5qAAAAAElFTkSuQmCC\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        animb009e807ff7f4da6bfedc9c8e64865bd = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff8300d7bd0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "def animate_AB_line(f, fp, f_str, x_A, axis=None):\n",
    "    y_A = f(x_A)\n",
    "    eps = 1e-4\n",
    "    x_B_range = 1.5\n",
    "    x_B = x_A + eps\n",
    "\n",
    "    n_frames = 200\n",
    "    text_offset_A = -0.2\n",
    "    text_offset_B = +0.1\n",
    "    x_min, x_max = -1000, 1000\n",
    "\n",
    "    fig, ax = plt.subplots()\n",
    "\n",
    "    # plot f(x)\n",
    "    xs = np.linspace(-2.1, 2.1, 500)\n",
    "    ys = f(xs)\n",
    "    ax.plot(xs, ys)\n",
    "\n",
    "    # plot the tangent to the curve at point A\n",
    "    if fp:\n",
    "        slope = fp(x_A)\n",
    "        offset = y_A - slope * x_A\n",
    "        ax.plot([x_min, x_max], [slope*x_min + offset, slope*x_max + offset],\n",
    "                \"y--\")\n",
    "\n",
    "    # plot the line AB and the labels A and B so they can be animated\n",
    "    y_A = f(x_A)\n",
    "    y_B = f(x_B)\n",
    "    xs, ys = get_AB_line([x_A, y_A], [x_B, y_B])\n",
    "    line_inf, = ax.plot(xs, ys, \"-\")\n",
    "    line_AB, = ax.plot([x_A, x_B], [y_A, y_B], \"bo-\")\n",
    "    ax.text(x_A + text_offset_A, y_A, \"A\", fontsize=14)\n",
    "    B_text = ax.text(x_B + text_offset_B, y_B, \"B\", fontsize=14)\n",
    "\n",
    "    # plot the grid and axis labels\n",
    "    title = r\"Slope of the curve $y = {}$ at $x_\\mathrm{{A}} = {}$\".format(f_str, x_A)\n",
    "    show(axis or [-2.1, 2.1, 0, 2.8], title=title)\n",
    "\n",
    "    def update_graph(i):\n",
    "        x_B = x_A + x_B_range * np.cos(i * 2 * np.pi / n_frames) ** 3\n",
    "        if np.abs(x_B - x_A) < eps:\n",
    "            x_B = x_A + eps # to avoid division by 0\n",
    "        y_B = f(x_B)\n",
    "        xs, ys = get_AB_line([x_A, y_A], [x_B, y_B])\n",
    "        line_inf.set_data(xs, ys)\n",
    "        line_AB.set_data([x_A, x_B], [y_A, y_B])\n",
    "        B_text.set_position([x_B + text_offset_B, y_B])\n",
    "        return line_inf, line_AB\n",
    "\n",
    "    anim = animation.FuncAnimation(fig, update_graph,\n",
    "                                  init_func=lambda: update_graph(0),\n",
    "                                  frames=n_frames,\n",
    "                                  interval=20,\n",
    "                                  blit=True)\n",
    "    plt.close()\n",
    "    return anim\n",
    "\n",
    "animate_AB_line(lambda x: x**2, lambda x: 2*x, \"x^2\", -1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "GAV2or0qutJX"
   },
   "source": [
    "As you can see, when point $\\mathrm{B}$ is very close to point $\\mathrm{A}$, the $(\\mathrm{AB})$ line becomes almost indistinguishable from the curve itself (at least locally around point $\\mathrm{A}$). The $(\\mathrm{AB})$ line gets closer and closer to the **tangent** line to the curve at point $\\mathrm{A}$: this is the best linear approximation of the curve at point $\\mathrm{A}$.\n",
    "\n",
    "So it makes sense to define the slope of the curve at point $\\mathrm{A}$ as the slope that the $\\mathrm{(AB)}$ line approaches when $\\mathrm{B}$ gets infinitely close to $\\mathrm{A}$. This slope is called the **derivative** of the function $f$ at $x=x_\\mathrm{A}$. For example, the derivative of the function $f(x)=x^2$ at $x=x_\\mathrm{A}$ is equal to $2x_\\mathrm{A}$ (we will see how to get this result shortly), so on the graph above, since the point $\\mathrm{A}$ is located at $x_\\mathrm{A}=-1$, the tangent line to the curve at that point has a slope of $-2$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "fKEdGL20JM-l"
   },
   "source": [
    "# Differentiability\n",
    "\n",
    "Note that some functions are not quite as well-behaved as $x^2$: for example, consider the function $f(x)=|x|$, the absolute value of $x$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 382
    },
    "colab_type": "code",
    "id": "V_K6JrBhF11E",
    "outputId": "f50cca79-4c04-46e1-cb70-bad878b33da4"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_img5ca2016451b14f3d80e7bc061349915a\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_slider5ca2016451b14f3d80e7bc061349915a\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"anim5ca2016451b14f3d80e7bc061349915a.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim5ca2016451b14f3d80e7bc061349915a.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_select5ca2016451b14f3d80e7bc061349915a\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_5ca2016451b14f3d80e7bc061349915a\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_5ca2016451b14f3d80e7bc061349915a\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_5ca2016451b14f3d80e7bc061349915a\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_5ca2016451b14f3d80e7bc061349915a\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_5ca2016451b14f3d80e7bc061349915a\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_5ca2016451b14f3d80e7bc061349915a\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_img5ca2016451b14f3d80e7bc061349915a\";\n",
       "    var slider_id = \"_anim_slider5ca2016451b14f3d80e7bc061349915a\";\n",
       "    var loop_select_id = \"_anim_loop_select5ca2016451b14f3d80e7bc061349915a\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "AAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\\\n",
       "dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd1hTZ/8G8DuDgGwEURAFEUWGgKIM\\\n",
       "F4iCG7XubR2Ao2qt7VvbaltbtVZtax1V3FoHVt/WuhAXapXhXijiAFmigKiIrOT5/dFXfqXskTw5\\\n",
       "8P1cl1ebc56Tc/Mk5CbJyYmIMcZACCGECIyYdwBCCCGkOqjACCGECBIVGCGEEEGiAiOEECJIVGCE\\\n",
       "EEIEiQqMEEKIIFGBEUIIESQqMEIIIYJEBUYIIUSQqMAIIYQIEhUYIYQQQaICI4QQIkhUYIQQQgSJ\\\n",
       "CowQQoggUYERQggRJCowQgghgkQFRgghRJCowARs4sSJ6N+/P+8YlaJQKBAYGAhjY2OIRCKEh4dX\\\n",
       "eltvb2/MnDlTeeFIkfDwcFhZWSl9G0JqAxWYGnv+/DmmT58OKysraGpqonHjxujRowdOnDjBO1qV\\\n",
       "HT16FFu3bsWhQ4eQmpqKTp06lTqOyqr+Etptv27dOrRo0QJaWlpwdXXF+fPneUeqd6S8A5CyDRky\\\n",
       "BDk5Odi8eTNsbGzw7NkznD17FhkZGbyjVdmDBw9gZmZWZnHVFfn5+ZDJZLxjECULCQnB7NmzsW7d\\\n",
       "OnTp0gXr1q1Dnz59EBMTg+bNm/OOV38wopZevHjBALATJ06UOWbChAmsX79+RZdzc3PZ7Nmzmamp\\\n",
       "KdPU1GTu7u7s/Pnzxbbx8vJigYGBbNasWczQ0JAZGhqyefPmMblcXjRGoVCwZcuWMWtra6alpcUc\\\n",
       "HR3Zzp07y81b3r4nTJjAABT9s7S0LPPn+ec4AOzx48fMy8uLTZs2jc2fP58ZGxuzRo0asY8++qjG\\\n",
       "mRUKBVuxYgWzsbFhMpmMNW3alH366afF5mrGjBnlzrmXlxcLCgpiH330ETMxMWGGhobM1NSUFRQU\\\n",
       "FNtu1KhRzN/fv0Z5mzZtylauXFls2c2bN5mmpia7c+dOudtW1pkzZ0rcPvv27WMymYzFx8cXLZs1\\\n",
       "axaztrZmT58+LXWbfzt27Bjr0qULMzQ0ZEZGRszPz4/FxMQUrS/rti9NRXlUwc3NjU2ZMqXYMhsb\\\n",
       "m2L3H6J8VGBqqqCggOnq6rIPPviAvX37ttQx/34wnTVrFmvSpAk7fPgwi4mJYVOmTGE6OjosJSWl\\\n",
       "aIyXlxfT1dVlM2fOZHfv3mUhISFMX1+/2APjZ599xlq3bs2OHTvGHj16xHbt2sW0tbXZ4cOHy8xb\\\n",
       "3r6zsrLYwoULmYWFBUtNTWXPnj0r9TqysrKYp6cne//991lqaipLTU1lhYWFzMvLi+nr67MFCxaw\\\n",
       "2NhYFhISwiQSCdu9e3eNMn/66afMwMCAbd68mcXFxbGLFy+ytWvXFpuryhSYrq4umzt3Lrt79y67\\\n",
       "ePEik8lk7NixY0VjsrOzmba2Ntu3b1+N8g4dOpSNHDmy2DIfH58SGRljbPHixUxHR6fcf+fOnSux\\\n",
       "XWllpFAomKura9ED9vLly1mjRo3Y/fv3y9zm3/bv38/279/P7t+/z27cuMGGDRvGWrZsyfLy8hhj\\\n",
       "Zd/2pakoT2VVd47y8vKYRCIpdnsyxtj06dNZt27dqpSB1AwVmBrbv38/MzIyYpqamszDw4N99NFH\\\n",
       "LDIysmj9Px9Ms7OzmYaGBtu+fXvR+sLCQmZtbc0+//zzomVeXl6sVatWTKFQFC375ptvWNOmTYuu\\\n",
       "R0tLq8Qv7uzZs1mfPn1KzVmZfS9fvrzCB7l3+f79gOzl5cU8PDyKLevZsyebPHlytTO/fv2aaWpq\\\n",
       "sl9++aVKWUorsLZt2xYbM2jQIDZ27Niiyzt37mT6+vpFf4hUJy9jjK1cuZK1bNmy6PLvv//OjIyM\\\n",
       "WHp6eomxGRkZLC4urtx/OTk5JbYrq4yOHz/OpFIpW7p0KdPV1WXR0dEVblOe7OxsJhaLi71CUNp8\\\n",
       "l6W8PIwxtnXrViaRSFhaWlqZ11HdOUpOTmYA2NmzZ4st//rrr1nr1q0rlZ/UDnoPTI0NGTIE/fr1\\\n",
       "w/nz5xEREYHQ0FCsXLkSixcvxmeffVZs7MOHD1FQUIDOnTsXLZNIJPD09ERMTEyxsR4eHhCJREWX\\\n",
       "PT09sWDBArx69QqxsbHIzc1F7969i40pKCgo80izquy7upycnIpdNjc3x7NnzwAAMTExVc4cExOD\\\n",
       "vLw89OjRo8bZXF1di10eO3YsJk6ciJycHGhra2PXrl0YOnQotLS0qp0X+Pt2++ijj5CZmQkdHR3M\\\n",
       "mzcPCxcuhLGxcYmxDRs2RMOGDWv8s73j5+eHjh074osvvsChQ4fQsWPHKm3/8OFDLFiwAFFRUXj+\\\n",
       "/DkUCgUUCgWePHmilDwhISFwc3PDgQMHMG3atFKvo6Zz9M/bDgAYYyWWEeWiAlNzWlpa8PX1ha+v\\\n",
       "LxYuXIgpU6bgq6++wrx584qNY4wBKPlLVdaysigUCgDAoUOHSrwZraGhUeo2tbXv8vx73yKRqChr\\\n",
       "TTKXRywWlxhXUFBQYpyOjk6xy/3794dUKsXBgwfRo0cPnDx5EmFhYUXrq5MX+LsoZTIZLl++jGvX\\\n",
       "rkEqlWLGjBmljl2yZAmWLFlS7s937NgxdO3atdwx75w+fRo3btwAYwyNGzeu1Db/NGDAADRt2hQb\\\n",
       "NmxA06ZNIZVKYW9vj/z8/CpfV0V5MjMzce/ePYSEhOCTTz4ps8CqO0cmJiaQSCR4+vRpseXPnj2r\\\n",
       "1tyQ6qMCExh7e3sUFhYiNze32HIbGxvIZDL89ddfsLa2BgDI5XJERERg9OjRxcZGRUUV+2sxMjIS\\\n",
       "5ubm0NfXh729PTQ1NZGQkAAfH59KZarKvisik8kgl8urtE11Mr/b5tSpU2jVqlWpYxo1aoTU1NRi\\\n",
       "y27cuFHhZ540NTUxdOhQ7Nq1C+np6WjSpAm8vLxqlPfd9bZr1w6HDh3C9u3bsXv37jILLygoCMOH\\\n",
       "Dy/3+po2bVqp/d64cQPvvfceVq9ejSNHjmD+/Pk4fvx4pXNnZGTg7t27WLt2Lbp37w4AuHr1KgoL\\\n",
       "C4uNq+xtX1GeAwcOYNCgQXBzc0NKSgpSUlJgbm5e4nqqO0cymQyurq44ceIEhg0bVrT8xIkTGDJk\\\n",
       "SIX5Se2hAlNTGRkZGDZsGCZNmgQnJyfo6enh8uXL+P7779GjRw/o6+sXG6+jo4Np06bh008/hYmJ\\\n",
       "CVq0aIEff/wRaWlpmD59erGxKSkpmDNnDqZPn45bt25h+fLl+OKLLwAAenp6mDdvHubNmwfGGLp1\\\n",
       "64bs7GxERkZCLBYjICCgRNaq7LsiVlZWiI6ORnx8PHR1dSv1Ek91Muvp6WH27NmYP38+NDU10a1b\\\n",
       "N2RkZODKlStFf7H7+Phgzpw5+PPPP2Fra4sNGzYgMTGxUh/aHTt2LHr27InHjx9j9OjREIv//yOX\\\n",
       "1cn7jqenJ1atWgVfX99yP8ReWy8hJiQkoG/fvpg7dy4mTZoENzc3ODk5ITw8HN7e3pW6DiMjI5iY\\\n",
       "mGDjxo1o1qwZkpOT8fHHH0MqLf7wU9pt/895q2yekJAQfPvttwCAoUOHYv/+/Zg1a1aJXDWZo7lz\\\n",
       "52LcuHFwc3ND586dsX79eqSkpCAoKKha10eqidN7b6QCubm5bP78+axDhw7M0NCQNWjQgNnY2LAP\\\n",
       "P/yQZWRkMMbKP4xeJpOVexj9jBkzmIGBATM0NGRz584tdsSXQqFgP//8M7Ozs2MymYyZmJiwnj17\\\n",
       "srCwsHLzlrfvyh7EERsbyzw8PFiDBg2KHUZf0cEU1cksl8vZ0qVLWYsWLZiGhgazsLBgn332WdH6\\\n",
       "/Px8Nn36dGZsbMyMjY3ZggULSj2Io7QDDxQKBbO0tGQA2M2bN0tdX9W8jDG2bds2JpFI2O3bt8sd\\\n",
       "V13/PCAjIyODtWnThgUEBBQbM3z48GIH1VTmII5Tp04xBwcHpqmpyRwcHFhoaCjT0dFhW7duLRpT\\\n",
       "2m3/T5XJk5aWxjQ1NZmlpSWztLRk5ubmrFOnTlWbhEpau3Yts7S0ZDKZjLVv377EQR1E+USMVeLN\\\n",
       "AFJneHt7w9HREWvWrOEdhVSDn58fWrVqhbVr1yrl+sPDwzFx4kTEx8crdRtlWbduHWJjY7Fq1aqi\\\n",
       "Za1bt8bJkyfpA8Z1EJ1KihA1p1AokJaWhmXLluHWrVtFL4+RkkJCQjB48OBiy/z9/bFv3z5OiYgy\\\n",
       "0XtghKi5c+fOwcfHB7a2tjhw4ACMjIx4R1JbZ8+eLbFsxYoVHJIQVaACq2eqchZ4oh68vb2LDr1X\\\n",
       "NisrK8yZM0fp2xBSG+g9MEIIIYJE74ERQggRpDr7EqKJiUm5n9d58+ZNiTMoqBPKVzPqmi82NhZy\\\n",
       "uRz29va8o5RJXefuHcpXMxXli4+PR3p6ugoTVV+dLTArKytcvny5zPVV+SAmD5SvZtQ1n7e3N7Ky\\\n",
       "ssq9b/KmrnP3DuWrmYrydejQQXVhaoheQiSEECJIVGCEEEIEiQqMEEKIIFGBEUIIESQqMEIIIYJE\\\n",
       "BUYIIUSQqMAIIYQIEhUYIYQQQaICI4QQIkhUYIQQQgSJCowQQoggUYERQggRJCowQgghgkQFRggh\\\n",
       "RJCowAghhAgSFRghhBBBogIjhBAiSNwLLDExEd27d4ednR0cHBywatWqEmPCw8NhYGAAFxcXuLi4\\\n",
       "YNGiRRySEkIIUSdS7gGkUqxcuRLt27fH69ev4erqCl9fX9jb2xcb17VrVxw+fJhTSkIIIeqG+zMw\\\n",
       "MzMztG/fHgCgp6cHOzs7JCcnc05FCCFE3XEvsH+Kj4/HtWvX4O7uXmJdREQEnJ2d0adPH9y5c4dD\\\n",
       "OkIIIepExBhjvEMAQHZ2Nry8vPD555/jvffeK7bu1atXEIvF0NXVxdGjRzF79mzExcWVuI7g4GAE\\\n",
       "BwcDAJKSkrB3795y96erq1u7P0Qtonw1o6755syZA7lcjtWrV/OOUiZ1nbt3KF/NVJRv3rx5uHz5\\\n",
       "sgoT1QBTA/n5+czPz4+tXLmyUuMtLS3Z8+fPyx3j6upa7vozZ85UNh4XlK9m1DWfl5cXc3Z25h2j\\\n",
       "XOo6d+9QvpqpKF9Fj53qhPtLiIwxTJ48GXZ2dpg7d26pY54+fQr2vyeK0dHRUCgUMDY2VmVMQggh\\\n",
       "aob7UYgXLlzAzp070bZtW7i4uAAAlixZgidPngAAgoKCsH//fvzyyy+QSqVo0KAB9u7dC5FIxDM2\\\n",
       "IYQQzrgXWJcuXYqeXZVl5syZmDlzpooSEUIIEQLuLyESQggh1UEFRgghRJCowAghhAgSFRghhBBB\\\n",
       "ogIjhBAiSFRghBBCBIkKjBBCiCBRgRFCCBEkKjBCCCGCRAVGCCFEkKjACCGECBIVGCGEEEGiAiOE\\\n",
       "ECJIVGCEEEIEiQqMEEKIIFGBEUIIESQqMEIIIYJEBUYIIUSQqMAIIYQIEhUYIYQQQaICI4QQIkhU\\\n",
       "YIQQQgSJCowQQoggUYERQggRJCowQgghAID8N1m8I1SJlHcAZUl8kYNCuQJSCXU0IYRU5GVmOtLW\\\n",
       "9eEdo0rq7KN7Vk4B5oRcR4FcwTsKIYSotaz0p3i+1g9WBQ95R6mSOltgTfS1cPhmKmbuvor8Qiox\\\n",
       "QggpTUZaEjLX9UKzwie4672Bd5wqqbMF1khPEwv62+P4nTRM+/UK8grlvCMRQohaSU9JwOsNvWEm\\\n",
       "T8H9Hpvh3H0Y70hVUmcLDAAmd2mBbwY54tS9Z5i64wpyC6jECCEEANKSHyFnY2+Yyp/hUa/taNtt\\\n",
       "IO9IVca9wBITE9G9e3fY2dnBwcEBq1atKjGGMYZZs2bBxsYGTk5OuHr1aqWvf5yHJZYNaYvzcc8x\\\n",
       "adsl5OQX1mZ8QggRnNSEWBRu6o2Gihd40vdXOHTqyztStXAvMKlUipUrV+Lu3buIjIzE2rVrERMT\\\n",
       "U2zMsWPHEBcXh7i4OAQHB2PatGlV2seIjs2xcpgzIh9lYOKWS8jOoxIjhNRPbzJTgK39oMdeI3nA\\\n",
       "brRx9+Mdqdq4F5iZmRnat28PANDT04OdnR2Sk5OLjTl48CDGjx8PkUgEDw8PZGVlITU1tUr7ea+9\\\n",
       "BX4a2Q5XnrzA+M1RyClgtfYzEEKIEDyJuwnXG5+jAd7i2eDfYNvBh3ekGuFeYP8UHx+Pa9euwd3d\\\n",
       "vdjy5ORkNGvWrOiyhYVFiZKrDH9nc6wZ1Q43k15i+aVcvMwpqHFmQggRgoR7V6G9awA0UIjMof+F\\\n",
       "jXMX3pFqTG0+yJydnY0hQ4bgp59+gr6+frF1jJV8tiQSiUosCw4ORnBwMAAgKSkJ4eHhJcY0ADDD\\\n",
       "RYa113Ix4MeT+LijFvRkJa+Lt+zs7FLzqwvKVz1ZWVmQy+Vqme0ddZ27dyhf1b1+9hid7iwEgwin\\\n",
       "bT5Ho/S3eKJmGatDLQqsoKAAQ4YMwZgxY/Dee++VWG9hYYHExMSiy0lJSTA3Ny8xLiAgAAEBAQCA\\\n",
       "Dh06wNvbu9T9eQOQiE5i7Y0CrLkjwa9T3NFIT7M2fpRaEx4eXmZ+dUD5qsfQ0BBZWVlqme0ddZ27\\\n",
       "dyhf1Ty4cQHG4QtQINJA7ujf0ShFve9/VcH9JUTGGCZPngw7OzvMnTu31DH+/v7YsWMHGGOIjIyE\\\n",
       "gYEBzMzMarRfp0ZSbJnYEQmZbzAyOAJpr3JrdH2EEKJuYq+ehenvw5AHLRSMP4zmrV14R6pV3J+B\\\n",
       "XbhwATt37kTbtm3h4vL35C5ZsgRPnjwBAAQFBaFv3744evQobGxsoK2tja1bt9bKvjvbmGD7+254\\\n",
       "f9sljNgQgd1TPWBu2KBWrpsQQni6F30CTY+Mw2uxPkQTD6GppS3vSLWOe4F16dKl1Pe4/kkkEmHt\\\n",
       "2rVK2b+7tTF2TnbDxC2XMCI4AruneKBZQ22l7IsQQlQhJuIYrEInIENsDNnkw2hs0ZJ3JKXg/hKi\\\n",
       "OnC1bIhfp7jjZU4BRgZHIiHjDe9IhBBSLbfPH0SL0PF4LmmEBlND62x5AVRgRZybGWL3VA/k5Bdi\\\n",
       "+IYIPHyezTsSIYRUyY3wA7A5ORlPJWbQCQiFibkl70hKRQX2D45NDbAnwAOFcoYRGyJxP+0170iE\\\n",
       "EFIp10/ugd2ZACRLm8Fw2nGYNGlW8UYCRwX2L22a6GNvgAdEImBkcCRiUl7xjkQIIeW6GrodDudn\\\n",
       "IF7DGiYzwmDUqGZHaQsFFVgpWjXWQ0iAB2QSMUZvisTt5Je8IxFCSKkuH9kIp4g5eKjRGk1mhsKg\\\n",
       "YSPekVSGCqwM1o10sS/QEzoyKUZtjMS1Jy94RyKEkGIu/bEO7aI/xn1NB1jMOgZ9Q2PekVSKCqwc\\\n",
       "zY21ERLoASNtGcZtjsal+EzekQghBAAQ/d9VcL32Ge5qOcNq1hHo6hvxjqRyVGAVsDDSxr5AT5jq\\\n",
       "aWLClmhEPMzgHYkQUs9FhXwPt5sLcbtBB9jMPgJtXQPekbigAquEJgZa2BvggaaGDfD+tmj8FZfO\\\n",
       "OxIhpJ6K3P0t3O8uxnVtT9jO+RNa2rq8I3FDBVZJpvpa2BPgAStjHUzafgln7j3jHYkQUs9E7lgA\\\n",
       "j/vLcVWnK+xn/wFNrfp91iAqsCow0dXEnqkeaN1YFwE7LyPszlPekQgh9UTE1v/A49HPuKLng7az\\\n",
       "D0CmqcU7EndUYFVkpCPDrikesDc3wPRdV3HkZtW+GZoQQqqCKRSI2DQXngnrccnADy6zf4OGTL2+\\\n",
       "/okXKrBqMGiggV8nu8G5mSE+2HMVB69X/duhCSGkIkyhQOTGD+CZtBnRRv3Q/oM9kEi5n4NdbVCB\\\n",
       "VZOelgZ2THJDR6uGmBNyHfuvJPGORAipQ5hCgaj1gfBM/RVRxoPQYeZOKq9/oQKrAR1NKba974bO\\\n",
       "LU3w8f4b2BP9hHckQkgdoJDLEb32fXg824dI0+Fwm7EVYomEdyy1QwVWQw1kEmya0AFerRth/n9v\\\n",
       "YUdEPO9IhBABk8vluLxmPNwz/kCE2Vi4B22ASEwP1aWhWakFWhoSbBjnip52jbHw4B1sOv+IdyRC\\\n",
       "iAAVFhTg6s+j4PbiMCItJsNj6moqr3LQzNQSTakE68a0Rx/HJvj2yF2sC3/AOxIhREAK8vNw4+fh\\\n",
       "6PjyOCIsg+Ax5QcqrwrQ7NQimVSM1aPawd/ZHN+HxmLVyTgwxnjHIoSoufy8XNxaNQSur08j0noW\\\n",
       "PN9fxjuSINAhLbVMKhHjxxEu0JCI8ePJ+8iXyzHPzxYikYh3NEKIGsrLzcHdn99D+5wIRLaeB4/R\\\n",
       "C3hHEgwqMCWQiEVYPtQJMqkIa888RIGcYX6fNlRihJBicnOyEfvzILjkXkKU/efwGP4J70iCQgWm\\\n",
       "JGKxCIsHtYWGRIzgc4+QX6jAlwPsqcQIIQCAnOyXeLTaH21zbyDa6Wu4D5nDO5LgUIEpkVgswtf+\\\n",
       "DtCQiLH5r8fIlyvw7UBHiMVUYoTUZ9mvXuDJ6gGwy7+NK+2XwG3gdN6RBIkKTMlEIhG+6GcHmVSM\\\n",
       "X8IfoqBQge+GOEFCJUZIvfQqKwMpa/qhdUEsrrktR8d+U3lHEiw6ClEFRCIRPulli9k9WuG3K0n4\\\n",
       "aN91FMoVvGMRQlTsZeZzPF3TG0v2X4PGoix07B8AkUgEExMT9O/fH/fu3eMdUVCowFREJBLhQ9/W\\\n",
       "mOfXGn9cT8HskOsooBIjpN548TwVz9f2glXBI2SZeqBnz55ITU1FamoqwsLC8PbtWwwePJh3TEGh\\\n",
       "lxBVbKZPK8ikYiw5eg+FcgVWj2oPmZT+jiCkLstIS8LLDf3QTJ6Me94b0DDhMNLT09GkSRMAQJMm\\\n",
       "TfDhhx9iwIABePv2LRo0aMA5sTDQIycHAd1a4ssB9jh+Jw1Bv15BboGcdyRCiJKkpyQge0NvmMlT\\\n",
       "ENdzM5y6Dy0x5vXr1wgJCUHbtm2pvKpA6QVmYWGBH374odiyW7duQUtLCzExMcrevdp6v3MLLB7s\\\n",
       "iNP3nmHqjst4m08lRkhdk5b0EG839kYj+TM86rUdjl0HFq0LDQ2Frq4udHV1oa+vj7Nnz2L37t0c\\\n",
       "0wqP0gvM09MTly5dKrZszpw5mDJlCuzt7ZW9e7U2xt0S3w91wl8P0jFp2yXk5BfyjkQIqSUp8bEo\\\n",
       "3NwHhooXeNJvFxw69S22vlu3brh+/TquX7+OqKgo+Pj4wM/PD4mJiZwSC4/KC+yPP/7AtWvX8PXX\\\n",
       "XwMAJk2aBFNTUzg6Opa6fXh4OAwMDODi4gIXFxcsWrRI2ZFVaniHZvhhuDOiHmdg4pZLyM6jEiNE\\\n",
       "6JIf3YF4Wz/osWykDgxBGzffEmO0tbVhY2MDGxsbuLm5YfPmzXj16hWCg4M5JBYmpReYh4cHHj58\\\n",
       "iMzMTOTl5WHevHlYuHAhjI2NAQATJ05EaGhoudfRtWvXor9UFi5cqOzIKje4nQVWjWyHK09eYNzm\\\n",
       "KLx8W8A7EiGkinbtAqysAB8fL3i0N8ChW73wbPBvaN3eq1Lbi0QiiMVi5OTkKDdoHaL0oxBdXV0h\\\n",
       "k8lw+fJlXLt2DVKpFDNmzCha361bN8THxys7htob4GwODYkYH+y5irGbohBoS2exJ0Qodu0CAgKA\\\n",
       "v7tHhKSXFph99GdsfE8CG+fSt8nLy8PTp08BAC9evMCaNWuQnZ2NAQMGqCy30Cn9GZimpibatWuH\\\n",
       "Q4cOYfHixVixYgU0NDSqdB0RERFwdnZGnz59cOfOHSUl5a+3YxOsH+uK2KevsexSLjKy83hHIoRU\\\n",
       "wuefvyuv//c2V4LPPy97m5MnT8LMzAxmZmZwd3fHpUuX8Ntvv8Hb21upWesSEVPBF1Z9+OGHWLVq\\\n",
       "FXx9fXH8+PES6+Pj49G/f3/cvn27xLpXr15BLBZDV1cXR48exezZsxEXF1fqfoKDg4teP05KSsLe\\\n",
       "vXvLzJSdnQ1dXd1q/kTKdet5IX6+lgtTbTE+6dgABprqd9opdZ4/QH3zzZkzB3K5HKtXr+YdpUzq\\\n",
       "OnfvqGO+7t29AJT8PRWJGE6fPqv6QOWoaP7mzZuHy5cvqzBRDTAV2LZtG5NIJOz27dulrn/8+DFz\\\n",
       "cHCo1HVZWlqy58+fVzjO1dW13PVnzpyp1P54Wbv/JGvzxTHms+IMe/ryLe84Jaj7/KlrPi8vL+bs\\\n",
       "7Mw7RrnUde7eUbd8IdsuMxHkDGAl/lla8k5XUkXzV9FjpzpRyQeZd+3ahcDAQDg4OFR526dPnxZ9\\\n",
       "q3F0dDQUCkXRASB1mb2xBNsnueHpy1yM2BCBlKy3vCMRQv5ld3A0pgS0RkPtTGhpFj81nLY2sHgx\\\n",
       "p2D1hNIO4lAoFHj+/Dm2bduGW7duISQkpNRxo0aNQnh4ONLT02FhYYGvv/4aBQV/H4UXFBSE/fv3\\\n",
       "45dffoFUKkWDBg2wd+/eevOdWm4tGmLHZHdM3BKN4RsisGeqB5o11OYdixACYOvqCHzwkRMa6z/D\\\n",
       "gWMi3Llvgs8/B548YWjeXITFi4ExY3inrNuUVmDnzp2Dj48PbG1tceDAARgZGZU6bs+ePeVez8yZ\\\n",
       "MzFz5kxlRBQEV0sj7JrqjnGbozFiQwR2T/WAlYkO71iE1Gsbf7iI2f9xgYVRCn4P04SDSzO4dPy7\\\n",
       "sMLDz9KBGCqitJcQvb29oVAocPfuXXTq1ElZu6kXnCwMsXuqO94WyDEiOAIPnmXzjkRIvbVm6Xl8\\\n",
       "8El7WBon4tAZbTi4NOMdqd6ik/kKhIO5AfYGeEKuYBgZHInYp695RyKk3vnx67OY+4U7bEwf48g5\\\n",
       "Q9g6mPOOVK9RgQmIbRM97A3whFgEjNoYiZiUV7wjEVJvfP/5aXyyqBPszO/jyIVGsG7dmHekeo8K\\\n",
       "TGBsTHUREugJTakYozZG4mZSFu9IhNR53847hc+WdoOTRQyOXjSHZQsT3pEIqMAEqYWJDvYFekJP\\\n",
       "S4oxG6Nw9ckL3pEIqbO+nHUSC1d2RzurWzgaaYmmzRryjkT+hwpMoJo11EZIoCca6sowblMULsVn\\\n",
       "8o5ESJ0zP+gEvlntA3ebqwiNskFjM0Pekcg/UIEJWFPDBggJ8ERjAy2M3xyNiw/TeUcipM74eFIY\\\n",
       "vtvgi06tL+FYtB2MG+nxjkT+hQpM4JoYaGFvgAcsjBrg/a2XcO7+c96RCBG82WOPY8VWP3jbX8TR\\\n",
       "6LYwNKLPXqojKrA6wFTv7xKzbqSLKdsv4/S9NN6RCBGsacPD8POuXujR9i8cjmoPfQM6+426ogKr\\\n",
       "I4x1NbFnqjtsm+ghcOcVHE8Ekd4AAB7HSURBVL/zlHckQgRFoWCYOigM63/zQ69253A4yg06ulq8\\\n",
       "Y5FyUIHVIYbaMvw6xR0O5gaYsesqjtxM5R2JEEFQyBWYNOAENh30Q7+O4fgzohO0Gsh4xyIVoAKr\\\n",
       "YwwaaGDnZDe0a26ID/ZcxR/XknlHIkStKeQKjOt9CtuP+mGg52n8caErZJpK/7J6UguowOogPS0N\\\n",
       "bHvfDe4tjPHhvuv47XIi70iEqCWFXIFRPU9j90lfDO16CvvPekGqIeEdi1QSFVgdpaMpxZaJHdHF\\\n",
       "xgQf77+J3VFPeEciRK0UFsgx1Csc+8J7YqTPSYSc6U7lJTBUYHVYA5kEG8d3QHfbRvjs91vYfjGe\\\n",
       "dyRC1EJ+XiEGdzmP3y/4YFzvMOwK84FYQg+HQkO3WB2npSHB+nGu8LVvjC//vION5x7xjkQIV7lv\\\n",
       "8zGw00UcjvbGpAHHse1wTyovgaJbrR7QlEqwbkx79GtrhsVH72LtmQe8IxHCRc6bPPh7RiP0ajcE\\\n",
       "DgnF5j97UXkJGB1qU09oSMRYNdIFGhIRlh+PRX6hAnN6toJIJOIdjRCVyH6dC/9OV3Hmdhd8MOo4\\\n",
       "ft7dm3ckUkNUYPWIVCLGyuEukErEWHUqDgVyBT7uZUslRuq8rBdv4N/pNs7f64S5E45j5bZevCOR\\\n",
       "WkAFVs9IxCJ8P8QJGhIx1oU/RH6hAp/3s6MSI3VWZno2+ne6i4g4d/xnShi+20jlVVdQgdVDYrEI\\\n",
       "SwY7QiYRYdNfj1EgV+DLAQ4Qi6nESN3yPO0l+nd6iEuPXLFgxgksWuPHOxKpRVRg9ZRIJMJX/g6Q\\\n",
       "ScXYeP4x8uUMiwc5UomROiM1+QUGdE7AtSfO+OrD01j4gy/vSKSWUYHVYyKRCJ/1tYNMKsbaMw9R\\\n",
       "IFdg2RAnSKjEiMAlJGRiYNdk3E5yxOJPwvHpdz15RyJKQAVWz4lEIszzs4WGRIyfTv59YMfKYc6Q\\\n",
       "0qHFRKDiHzzDAK90xD61xXdf/IV5i3rwjkSUhAqMQCQSYU7P1tCQiLH8eCwK5Qw/jXSBBpUYEZgH\\\n",
       "957Cv/tLPHzeEisWRWLW5968IxElogIjRWZ0t4GmVIxvj9xFvlyBNaPbQVNK54YjwhBzKxmDe+bg\\\n",
       "SWZzrFoajaCPu/GORJSM/sQmxUzpao2v/R1wIiYNQTuvILdAzjsSIRW6dTUR/j65SHphjjUrriHo\\\n",
       "4668IxEVoAIjJUzoZIUlg9si/P5zTN1xGW/zqcSI+roSFQ9/XznSXjXG+p9vY/LsTrwjERWhAiOl\\\n",
       "Gu3eHN8PccJfD9Lx/rZovMkr5B2JkBIizz/C4N4SZL5piOB1dzEuyJ13JKJC3Ats0qRJMDU1haOj\\\n",
       "Y6nrGWOYNWsWbGxs4OTkhKtXr6o4Yf01rEMz/DjcBdGPMzFhSzRe5xbwjkRIkfOn7mNIfy28ztXF\\\n",
       "lk1xGDW5I+9IRMW4F9jEiRMRGhpa5vpjx44hLi4OcXFxCA4OxrRp01SYjgxq1xSrR7XH9cQsjNsc\\\n",
       "jZdvqcQIf6eO3cXwwfrIK9TEju0JGDLWlXckwgH3AuvWrRsaNmxY5vqDBw9i/PjxEIlE8PDwQFZW\\\n",
       "FlJTU1WYkPRzMsO6Me1xJ+Ulxm6KQlZOPu9IpB67fTkLo4YZQ66Q4NfdqRgw3IV3JMIJ9wKrSHJy\\\n",
       "Mpo1a1Z02cLCAsnJyRwT1U9+Dk0QPK4DYtNeY2RwJF7lM96RSD10eP9NfPVlV4hFDHt+S0fvgaW/\\\n",
       "9UDqB7X/HBhjJR8oyzpzenBwMIKDgwEASUlJCA8PL/N6s7Ozy13PmzrmEwGY5aKBVVdfY8krBgU7\\\n",
       "DUNN9fwbSB3nDwCysrIgl8vVMts76jp31y5kYtG33aEte4svF1+CpIEBwsPTeMcqQV3n7x11z1cl\\\n",
       "TA08fvyYOTg4lLouICCA7d69u+hy69atWUpKSoXX6erqWu76M2fOVCmjqqlzvgsPnrNWnx1m3Zef\\\n",
       "YalZb3nHKZW6zp+XlxdzdnbmHaNc6jh3e7ZEMwPNLNbM8Anb9MtB3nHKpY7z908V5avosVOdqOef\\\n",
       "z//g7++PHTt2gDGGyMhIGBgYwMzMjHeseq1TSxPM66CFZ6/zMCI4AslZb3lHInXYrxuiMDXIDoba\\\n",
       "Wfjv0UK0bKPPOxJRE9wLbNSoUfD09ERsbCwsLCywefNmrF+/HuvXrwcA9O3bF9bW1rCxscHUqVOx\\\n",
       "bt06zokJALQ2kmDnZDdkvsnHiA0RSMzM4R2J1EFbVkcg8ANHNNZ/hoNhInTwbME7ElEj3N8D27Nn\\\n",
       "T7nrRSIR1q5dq6I0pCraNTfC7ikeGLs5CsM3RGD3VA+0MNHhHYvUEetXXMCH89ujmVEyfj+pBQcn\\\n",
       "C96RiJrh/gyMCFtbCwPsmeqBvEIFRmyIwINnr3lHInXA6iXnMfvTDmhhkoDD4TpUXqRUVGCkxuzN\\\n",
       "9bE3wAMKBowMjkTsUyoxUn0/fBWOjxa4o3Xjhzhyzgit7ek9b1I6KjBSK1o31kNIoAckYhFGBkfg\\\n",
       "TspL3pGIAC2bfwb/+aYz7M1jcfhCY7Ro1Zh3JKLGqMBIrWnZSBchAZ5ooCHB6I1RuJmUxTsSEZBv\\\n",
       "5p7CZ8u6wanZHRy52BSWVsa8IxE1RwVGapWViQ5CAj2hpyXFmI1RuJLwgnckIgALPziBL3/sjg4t\\\n",
       "ruNohBWaNiv79HKEvEMFRmpds4ba2BfoCWNdGcZvjkL040zekYgamx8Yhm/W+MLD5gqORrZGYzND\\\n",
       "3pGIQFCBEaUwN2yAkEBPNDHQwoQt0bj4IJ13JKKG5r0fhu+C/dDFNgpHo+1h3EiPdyQiIFRgRGka\\\n",
       "62thb4AnmjfUxvvbLuHs/ee8IxE1Mmt0GFZu84O3/UUciWoLQyP6DCGpGiowolSN9DSxJ8ADLRvp\\\n",
       "Yur2yzh1V/1OvkpUL2jocaze44eeTn/hSLQr9A20eUciAkQFRpSuoY4Mu6e6o42ZHoJ+vYLQ2095\\\n",
       "RyKcKOQKTB4Yhg0HeqF3+7M4FOkGbR1N3rGIQFGBEZUw1Jbh1ynucGxqgBm7r+LQjRTekYiKKeQK\\\n",
       "vN//JLb86Yf+buE4eLEztBrIeMciAkYFRlRGX0sDOye7w7W5EWbvvYbfryXxjkRURCFXYGyvU9gR\\\n",
       "6odBnU7j97+6QqbJ/VSsROCowIhK6WpKsW1SR3hYG2PuvhvYdymRdySiZIUFCozwOY09p3wxtNtJ\\\n",
       "HDjnDamGhHcsUgdQgRGV05ZJsWViR3SxMcEnB27i18gE3pGIkhQWyDHU6yz2n+uJUT1OIOS0D8QS\\\n",
       "etghtYPuSYQLLQ0JNo7vAJ82pvjij9vYeuEx70ikluXnFWJwl/M4GNEd4/scx6/He1B5kVpF9ybC\\\n",
       "jZaGBOvHuqKXQ2N8fSgGwece8o5Eaknu23z4e17E4WhvTPYPw9ZDvlRepNbRPYpwJZOKsWZ0e/R3\\\n",
       "MsOSo/ew5nQc70ikhnLe5GGARzSOX+uGoKHHsemgH5UXUQo6DIhwpyER46cRLtCQiLEi7D7y5Qwf\\\n",
       "9mwFkUjEOxqpolcvczCw03WEx3TBrNHHsWpXL96RSB1GBUbUglQixophzpCKRfj5VBzyCxX4T29b\\\n",
       "KjEByXrxBgM8b+Ov2E74aGIYVmyl8iLKRQVG1IZELMKyIU6QScVYf/YhCuQKfNHPjkpMADKev8aA\\\n",
       "TvcQ8cAdnwaEYekGP96RSD1ABUbUilgswreDHKEhEWPzX49RIFfgqwEOEIupxNRVWmoWBnR+hMuP\\\n",
       "XfHFjBP4Zg2VF1ENKjCidkQiEb4cYA9NqRgbzj1CfqECSwa3pRJTQ8mJmfDvkojric74+sMzWPCD\\\n",
       "L+9IpB6hAiNqSSQS4dM+baAhEWPNmQcokDN8P9QJEioxtZEQn4GBXVNwJ8UeS/5zDv9Z2oN3JFLP\\\n",
       "UIERtSUSiTCvly1kUjF+OHEfBXIFfhjuDCkdks1d/INn6N8tA/fTbPH9ggv48KvuvCOReogKjKi9\\\n",
       "WT1aQUMixrLQeyhUKLBqZDtoUIlxcz8mFQN9XuFxegv88G0EZs735h2J1FNUYEQQpnm3hIZEhG+P\\\n",
       "3EV+4VWsHdMOmlI6Iayq3bmZhME9c5H4ojlWfXcZgfO8eEci9Rj9GUsEY0pXaywa6ICTd9MQuPMK\\\n",
       "cgvkvCPVKzcuP4G/TwGSs8yw9odrCJzXhXckUs9RgRFBGe9phaXvtcXZ+88xZftlvM2nElOFyxGP\\\n",
       "MdCP4flrE2xYfRuTPujEOxIhVGBEeEa5Ncfyoc64+DAdE7dG401eIe9IdVrkuYd4r68UWTmGCF5/\\\n",
       "D2MD3XlHIgQAFRgRqKGuFvhxhAsuJ7zAhC3ReJ1bwDtSnXTuZCyGDGiA17m62LrlEUa+35F3JEKK\\\n",
       "qEWBhYaGwtbWFjY2Nvjuu+9KrA8PD4eBgQFcXFzg4uKCRYsWcUhJ1M1Al6ZYM6odridmYezmaLzM\\\n",
       "oRKrTaeOxGD4YEPkFWpi585EDB7djnckQorhfhSiXC7HjBkzcOLECVhYWKBjx47w9/eHvb19sXFd\\\n",
       "u3bF4cOHOaUk6qpPWzP8IhFj+q4rGL0pEr9OdoeRjox3LMELPXgb48c0BsCwe08q/PydeEcipATu\\\n",
       "z8Cio6NhY2MDa2tryGQyjBw5EgcPHuQdiwiIr31jBI/vgLhn2Ri1MRLp2Xm8Iwna9chMjBllDolY\\\n",
       "jr2/ZcDP35F3JEJKxb3AkpOT0axZs6LLFhYWSE5OLjEuIiICzs7O6NOnD+7cuaPKiEQAutuaYsuE\\\n",
       "jojPeINRwZHIylXwjiRI/911FV9/3R1aGrnY9/sr+PSx4x2JkDJxfwmRMVZi2b+/PqN9+/ZISEiA\\\n",
       "rq4ujh49ikGDBiEuruQ39wYHByM4OBgAkJSUhPDw8DL3m52dXe563ihf9cxpJ8OPV7KxJIqB4TSM\\\n",
       "tLj/jVZMVlYW5HK5Ws5d9JkMLF7mC4MGL/HVd9chl+ghPDyFd6wS1PW+9w7lUyHG2cWLF5mfn1/R\\\n",
       "5SVLlrAlS5aUu42lpSV7/vx5uWNcXV3LXX/mzJlKZ+SB8lXfpccZzPazw6zrstMsMfMN7zjFeHl5\\\n",
       "MWdnZ94xSti+LpLpyl4zq4aP2baNf/KOUy51vu8xJvx8FT12qhPuf5527NgRcXFxePz4MfLz87F3\\\n",
       "7174+/sXG/P06dOiZ2rR0dFQKBQwNjbmEZcIQAerhvikoxZe5ORjxIZIPMnI4R1JrW1edRHTZjui\\\n",
       "sX4a/jwhgaWNHu9IhFQK9wKTSqVYs2YNevXqBTs7OwwfPhwODg5Yv3491q9fDwDYv38/HB0d4ezs\\\n",
       "jFmzZmHv3r30Lb2kXNaGEuyZ6oE3+YUYERyBx+lveEdSS798/xdmzmsHC6MU/HlaC23bN6t4I0LU\\\n",
       "BPf3wACgb9++6Nu3b7FlQUFBRf8/c+ZMzJw5U9WxiMA5NjXAnqkeGLspCsM3RGDPVHfYmNKzi3d+\\\n",
       "XnwOH3/pjpaN4vHHKX20tjfjHYmQKuH+DIwQZbIz08feAA8AwIgNkbj39BXnROphxcJwzFvogdZN\\\n",
       "HuDoeSMqLyJIVGCkzmvVWA8hAR7QkIgxKjgSt5Nf8o7E1dL/nMan33aBfdNYHL1gBisbU96RCKkW\\\n",
       "KjBSL1g30kVIoAe0ZVKM3hiJG4lZvCNxsWjuSXyx3AsuzW/jWIQFmlk25B2JkGqjAiP1hqWxDkIC\\\n",
       "PWCgrYGxm6JwJSGTdySVWjDjBL760QcdWtzAsagWMGtqxDsSITVCBUbqFQsjbewL9ISJnibGbY5G\\\n",
       "1KMM3pFU4j9Tw/DtOl94tLqCo5Gt0KixAe9IhNQYFRipd8wMGiAkwAPmhg0wYWs0LjxI5x1JqeZO\\\n",
       "OI7vN/mha5tIHI2yh3EjOhKT1A1UYKReMtXXwt4AD1gZ62DStksIj33GO5JSzBwVhh939EJ3x4s4\\\n",
       "Gu0CQyMd3pEIqTVUYKTeMtHVxO6pHmjZSBcBO67gZEwa70i1KnDIcazd6wdf579wONIVunpavCMR\\\n",
       "UquowEi91lBHhj1TPWBnpoegX68g9HYq70g1ppArMNk/DMH/7YU+rmfxZ4QbtHU0eccipNZRgZF6\\\n",
       "z0BbAzunuMO5mSFm7L6GP2+o3xnYK0shV2BCv1PYcsgP/d3C8ceFztBqQF/wSeomKjBCAOhraWD7\\\n",
       "JDe4Whphzt5rOHAliXekKlPIFRjtdxq/HvfF4M6n8ftfXSHTVIuzxRGiFFRghPyPrqYU297vCA9r\\\n",
       "Y8zbfwMhl57wjlRphQVyDO9+BiGne2K490nsP+sNqYaEdyxClIoKjJB/0JZJsWViR3Rr1Qj/OXAL\\\n",
       "OyMTeEeqUGGBHEO7ncOB8z0wuucJ7DnpA7GEfrVJ3Uf3ckL+RUtDguDxruhpZ4oFf9zGlr8e845U\\\n",
       "pvy8QgzqfB4HI7tjQt8w7AztQeVF6g26pxNSCk2pBOvGuKKPYxMsOhyD9Wcf8o5UQu7bfPh7XsSR\\\n",
       "S96YOigM2474UXmReoXu7YSUQSYVY/WodhjgbI7vjt3D6lNxvCMVeZOdh/7ul3D8WjdMGxaK4N/9\\\n",
       "eEciROXoECVCyiGViPHTCBdoiEVYeeI+CuQKfOjbmus3gr96mQP/TjdwNqYzZo05jlW/9uaWhRCe\\\n",
       "qMAIqYBELMLyYc7QkIjx8+kHyJMr8GnvNlxK7EVGNgZ0uoML9z0x7/0wLN/SS+UZCFEXVGCEVIJE\\\n",
       "LMLS99pCQyrChrOPkF+owML+9iotsYznr9G/UyyiHnTE/MATWLKeXjYk9RsVGCGVJBaL8M1AR8gk\\\n",
       "Emy58BgFcgUW+TtCLFZ+iaWlZqF/58e4Gt8OCz44ja9/9lX6PglRd1RghFSBSCTCgv52Rc/ECgoZ\\\n",
       "lr7XVqkllpyYiQFdknAzsS2+nhuOL1b0VNq+CBESKjBCqkgkEuHT3m2g+b/3xAoUCiwf6gyJEkos\\\n",
       "4VE6/L2eIibFDkvmn8Mni3vU+j4IESoqMEKqQSQSYa6fLTQk4v8dncjww/C/D/SoLY/up2GAdybi\\\n",
       "0lrj+wUX8OFXPrV23YTUBVRghNTABz1aQSYVY+mxeygoVODnUe0gk9a8xO7dTsGgntmIT2+BHxdH\\\n",
       "Ycan3jUPS0gdQwVGSA256b/Ck+X+2GZmi0LFdqwd0x6a0uqfSPf2tSQM7pWH5BcWWP39VUyd27UW\\\n",
       "0xJSd9CZOAipoY0bN2LG9OkQZyXh2PkrCNhxBbkF8mpd1/VLT+DfsxCpWU2w7scbmDq3Uy2nJaTu\\\n",
       "oGdghNTA27dvsXv3bpw7dw45OTlIy72Kc3HNMHn7JWwc3wHassr/il268BDDBmgg840xgtfcwegA\\\n",
       "TyUmJ0T46BkYITWwf/9+WFpawsnJCePGjUN02B9YNsgeEQ8zMHHrJWTnFVbqei6GP8DgflrIyjHA\\\n",
       "pg2xGB3gpuTkhAgfFRghNbBp0yaMGzcOAODl5QVtbW1Ikq5i1ch2uJLwAuM3R+FVbkG513E27B6G\\\n",
       "+usgJ18b27c9wvCJHVQRnRDBowIjpJoePHiACxcuYPTo0QD+PrR+zJgx2LRpEwY4m2Pt6Ha4mfQS\\\n",
       "4zZF4WVO6SV26kgMhg9piHy5DL/uTMTAke1U+SMQImhqUWChoaGwtbWFjY0NvvvuuxLrGWOYNWsW\\\n",
       "bGxs4OTkhKtXr3JISUhxmzZtglwuR/PmzSGVSiGVSvHdd98hLCwMiYmJ6O1ohvVjXXE39TVGb4pE\\\n",
       "5pv8Ytsf+/0mRg43BWPA7j2p6DvEidNPQogwcS8wuVyOGTNm4NixY4iJicGePXsQExNTbMyxY8cQ\\\n",
       "FxeHuLg4BAcHY9q0aZzSEvK3wsJCbN++HUuXLsX169eL/t24cQNOTk7YunUrAKCnfWMEj3fFg2fZ\\\n",
       "8A58iIhI4MYNQ5g2ysewEdaQSgoRsj8Dfv6OnH8iQoSHe4FFR0fDxsYG1tbWkMlkGDlyJA4ePFhs\\\n",
       "zMGDBzF+/HiIRCJ4eHggKysLqampnBITAhw5cgTp6emYOnUqHB0di/0bOXIktmzZAoVCAQDwtjXF\\\n",
       "yIadcXtfK+Tn/b3983QZcgq0EfABQ/fedhx/EkKEi/th9MnJyWjWrFnRZQsLC0RFRVU4Jjk5GWZm\\\n",
       "ZmVeb2xsLLy9vctcn5WVBUNDw+oHVzLKVzPKznf79m3o6elhyJAhJda9ffsWCQkJcHFxQcOGDQEA\\\n",
       "kZEAKwCA6/8b5Q0GYNlK4OwFpcWslvp+29YU5VMd7gXGGCux7N/fsVSZMQAQHByM4ODgom2ys7PL\\\n",
       "3O+LFy8glXL/8ctE+WpG2fmsrKwAoMz7mKura7H1eXnv1tj877//v7ycuykX9f22rSmh54uPj1dd\\\n",
       "mBriPssWFhZITEwsupyUlARzc/MqjwGAgIAABAQEVGq/HTp0wOXLl6uZWvkoX82ocz51zgZQvpqi\\\n",
       "fKrD/T2wjh07Ii4uDo8fP0Z+fj727t0Lf3//YmP8/f2xY8cOMMYQGRkJAwODcl8+JIQQUvdxfwYm\\\n",
       "lUqxZs0a9OrVC3K5HJMmTYKDgwPWr18PAAgKCkLfvn1x9OhR2NjYQFtbu+gIL0IIIfUX9wIDgL59\\\n",
       "+6Jv377FlgUFBRX9v0gkwtq1a2t1n5V9qZEXylcz6pxPnbMBlK+mKJ/qiFhpR0gQQgghao77e2CE\\\n",
       "EEJIddSbAvv444/Rpk0bODk5YfDgwcjKyip1XEWntVKW3377DQ4ODhCLxeUeIWRlZYW2bdvCxcUF\\\n",
       "HTqo7qSvlc3HY/4yMzPh6+uLVq1awdfXFy9evCh1nKrnTt1PkVZRvvDwcBgYGMDFxQUuLi5YtGiR\\\n",
       "yrJNmjQJpqamcHQs/QwlvOeuonw85w4AEhMT0b17d9jZ2cHBwQGrVq0qMYb3HNYKVk8cP36cFRQU\\\n",
       "MMYY++STT9gnn3xSYkxhYSGztrZmDx8+ZHl5eczJyYnduXNHJfliYmLYvXv3mJeXF7t06VKZ4ywt\\\n",
       "Ldnz589VkumfKpOP1/x9/PHHbOnSpYwxxpYuXVrqbcuYaueuMnNx5MgR1rt3b6ZQKFhERARzc3NT\\\n",
       "SbbK5jtz5gzr16+fyjL909mzZ9mVK1eYg4NDqet5zl1l8vGcO8YYS0lJYVeuXGGMMfbq1SvWqlUr\\\n",
       "tbr/1ZZ68wzMz8+v6MN7Hh4eSEpKKjGmMqe1UhY7OzvY2tqqZF/VUZl8vObv4MGDmDBhAgBgwoQJ\\\n",
       "+OOPP5S+z4qo+ynSeN7XK6Nbt25FZzEpDe/Ty1WUjzczMzO0b98eAKCnpwc7OzskJycXG8N7DmtD\\\n",
       "vSmwf9qyZQv69OlTYnlZp6xSJyKRCH5+fnB1dS0664i64DV/aWlpRZ8LNDMzw7Nnz0odp8q5q8xc\\\n",
       "8Ly/VXbfERERcHZ2Rp8+fXDnzh2VZKsMIfyuqsvcxcfH49q1a3B3dy+2XAhzWBG1OIy+tvTs2RNP\\\n",
       "nz4tsXzx4sUYOHBg0f9LpVKMGTOmxDhWyVNWKTNfRS5cuABzc3M8e/YMvr6+aNOmDbp166YW+ZQ5\\\n",
       "f+Vlqyxlzt2/VWYulH1/K09l9t2+fXskJCRAV1cXR48exaBBgxAXF6eSfBXhOXeVoS5zl52djSFD\\\n",
       "huCnn36Cvr5+sXXqPoeVUacK7OTJk+Wu3759Ow4fPoxTp06VekNV9pRVyspXGe/ymJqaYvDgwYiO\\\n",
       "jq61B+Ga5lPm/JWXrXHjxkhNTYWZmRlSU1Nhampa6jhlzt2/1eYp0njl++cDXt++fTF9+nSkp6fD\\\n",
       "xMREJRnLw3PuKkMd5q6goABDhgzBmDFj8N5775VYr+5zWBn15iXE0NBQLFu2DH/++Se0tbVLHVOZ\\\n",
       "01rx9ObNG7x+/bro/8PCwso8CooHXvPn7++P7du3A/j7j5TSni2qeu7U/RRplcn39OnTor/So6Oj\\\n",
       "oVAoYGxsrJJ8FVH308vxnjvGGCZPngw7OzvMnTu31DHqPoeVwuXQEQ5atmzJLCwsmLOzM3N2dmaB\\\n",
       "gYGMMcaSk5NZnz59isYdOXKEtWrVillbW7Nvv/1WZfn++9//sqZNmzKZTMZMTU2Zn59fiXwPHz5k\\\n",
       "Tk5OzMnJidnb26tdPsb4zF96ejrz8fFhNjY2zMfHh2VkZJTIxmPuSpuLX375hf3yyy+MMcYUCgWb\\\n",
       "Pn06s7a2Zo6OjuUefcoj3+rVq5m9vT1zcnJi7u7u7MKFCyrLNnLkSNakSRMmlUpZ06ZN2aZNm9Rq\\\n",
       "7irKx3PuGGPs/PnzDABr27Zt0WPekSNH1GoOawOdiYMQQogg1ZuXEAkhhNQtVGCEEEIEiQqMEEKI\\\n",
       "IFGBEUIIESQqMEIIIYJEBUYIIUSQqMAIIYQIEhUYIYQQQaICI0QFfvvtN2hqaiIhIaFo2ezZs9Gy\\\n",
       "ZUukpaVxTEaIcNGZOAhRAcYYOnbsiHbt2mHjxo1YsWIFvv/+e1y4cAGtWrXiHY8QQapTZ6MnRF2J\\\n",
       "RCIsWbIE/fr1Q8uWLbF48WKcPn2ayouQGqBnYISoUKdOnRAdHY1Dhw6V+qWqhJDKo/fACFGR06dP\\\n",
       "48aNG2CMoXHjxrzjECJ49AyMEBW4ceMGvLy88MMPP+DIkSPIzs7G8ePHecciRNCowAhRsoSEBHTq\\\n",
       "1AmBgYFYuHAhbt++DScnJ5w+fRre3t684xEiWFRghChRZmYmOnfujG7dumHDhg1Fy0eMGIEnT54g\\\n",
       "IiKCYzpChI0KjBBCiCDRQRyEEEIEiQqMEEKIIFGBEUIIEaT/A6ydFC6zusxTAAAAAElFTkSuQmCC\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        anim5ca2016451b14f3d80e7bc061349915a = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff820137190>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "animate_AB_line(lambda x: np.abs(x), None, \"|x|\", 0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "l9dTigohF0BM"
   },
   "source": [
    "No matter how much you zoom in on the origin (the point at $x=0, y=0$), the curve will always look like a V. The slope is -1 for any $x < 0$, and it is +1 for any $x > 0$, but **at $x = 0$, the slope is undefined**, since it is not possible to approximate the curve $y=|x|$ locally around the origin using a straight line, no matter how much you zoom in on that point.\n",
    "\n",
    "The function $f(x)=|x|$ is said to be **non-differentiable** at $x=0$: its derivative is undefined at $x=0$. This means that the curve $y=|x|$ has an undefined slope at that point. However, the function $f(x)=|x|$ is **differentiable** at all other points.\n",
    "\n",
    "In order for a function $f(x)$ to be differentiable at some point $x_\\mathrm{A}$, the slope of the $(\\mathrm{AB})$ line must approach a single finite value as $\\mathrm{B}$ gets infinitely close to $\\mathrm{A}$.\n",
    "\n",
    "This implies several constraints:\n",
    "\n",
    "* First, the function must of course be **defined** at $x_\\mathrm{A}$. As a counterexample, the function $f(x)=\\dfrac{1}{x}$ is undefined at $x_\\mathrm{A}=0$, so it is not differentiable at that point.\n",
    "* The function must also be **continuous** at $x_\\mathrm{A}$, meaning that as $x_\\mathrm{B}$ gets infinitely close to $x_\\mathrm{A}$, $f(x_\\mathrm{B})$ must also get infinitely close to $f(x_\\mathrm{A})$. As a counterexample, $f(x)=\\begin{cases}-1 \\text{ if }x < 0\\\\+1 \\text{ if }x \\geq 0\\end{cases}$ is not continuous at $x_\\mathrm{A}=0$, even though it is defined at that point: indeed, when you approach it from the negative side, it does not approach infinitely close to $f(0)=+1$. Therefore, it is not continuous at that point, and thus not differentiable either.\n",
    "* The function must not have a **breaking point** at $x_\\mathrm{A}$, meaning that the slope that the $(\\mathrm{AB})$ line approaches as $\\mathrm{B}$ approaches $\\mathrm{A}$ must be the same whether $\\mathrm{B}$ approaches from the left side or from the right side. We already saw a counterexample with $f(x)=|x|$, which is both defined and continuous at $x_\\mathrm{A}=0$, but which has a breaking point at $x_\\mathrm{A}=0$: the slope of the curve $y=|x|$ is -1 on the left, and +1 on the right.\n",
    "* The curve $y=f(x)$ must not be **vertical** at point $\\mathrm{A}$. One counterexample is $f(x)=\\sqrt[3]{x}$, the cubic root of $x$: the curve is vertical at the origin, so the function is not differentiable at $x_\\mathrm{A}=0$, as you can see in the following animation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 382
    },
    "colab_type": "code",
    "id": "W_hMdqOHUCmt",
    "outputId": "6ade4050-7f96-45a3-fe54-23399e821b2b"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_imgea3d9a997ba2429fbd1b76f5e6f09474\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_sliderea3d9a997ba2429fbd1b76f5e6f09474\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"animea3d9a997ba2429fbd1b76f5e6f09474.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"animea3d9a997ba2429fbd1b76f5e6f09474.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_selectea3d9a997ba2429fbd1b76f5e6f09474\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_ea3d9a997ba2429fbd1b76f5e6f09474\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_ea3d9a997ba2429fbd1b76f5e6f09474\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_ea3d9a997ba2429fbd1b76f5e6f09474\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_ea3d9a997ba2429fbd1b76f5e6f09474\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_ea3d9a997ba2429fbd1b76f5e6f09474\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_ea3d9a997ba2429fbd1b76f5e6f09474\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_imgea3d9a997ba2429fbd1b76f5e6f09474\";\n",
       "    var slider_id = \"_anim_sliderea3d9a997ba2429fbd1b76f5e6f09474\";\n",
       "    var loop_select_id = \"_anim_loop_selectea3d9a997ba2429fbd1b76f5e6f09474\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "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\\\n",
       "bdmyJevXr2fRokUsWbKk2MIbO3Yszz77bImv5+XlVeTjL730Es899xxXrlxh9erVxT4/MjKSp59+\\\n",
       "mi+//JKNGzfy5ptvsnXr1hLnmZ6ezpkzZ5g3bx7dunUD8g/Tz8vLKzTuQT8H98uQkZHB2bNnWbZs\\\n",
       "GW+88UaxBVaa5WVtbU1oaCjbt28vVPTbt29n4MCB980uyo8UmIlJT0/nmWeeYeTIkQQHB+Po6Mjh\\\n",
       "w4f517/+Rffu3XFycio0vkaNGowbN47p06fj7u5O/fr1+fe//83Vq1cZP358obGJiYm8+uqrjB8/\\\n",
       "npMnTzJ37lzefvttABwdHZk6dSpTp05FKUWXLl24efMmBw4cwNzcnNGjR9+T9WHmfT9+fn4cPHiQ\\\n",
       "2NhYHBwcHmizTmkyOzo6MnnyZN58801sbGzo0qUL6enpHDlypOCP3KOPPsqrr77KunXraNy4Md99\\\n",
       "9x1xcXH3LTDI34zYo0cPYmJieOGFFzA3/8+ZKqXJe1f79u35/PPP6dmzZ4knsZdlk1j37t2xs7PD\\\n",
       "w8PjnrXLuy5fvkyfPn2YMmUKI0eOpG3btgQHBxMeHk7Xrl2LfW1XV1fc3d35/vvv8fHxISEhgWnT\\\n",
       "pmFpWfhPUFGfg/9ehg+aYdWqVfTv35+2bduSmJhIYmIinp6e9+Qq7fKaMmUKL730Em3btqVjx458\\\n",
       "++23JCYmMnbs2Id+LVEGGu17E8XIyspSb775pmrdurVycXFRdnZ2KiAgQL322msqPT1dKVXyYfTW\\\n",
       "1tYlHkY/YcIE5ezsrFxcXNSUKVMKHeVlMBjUF198oZo2baqsra2Vu7u76tGjh9q2bVuJeUua94Me\\\n",
       "xHHu3DnVrl07ZWdnV+gw+vsdTFGazHq9Xs2ZM0fVr19fWVlZKW9vbzVjxoyC6Tk5OWr8+PHKzc1N\\\n",
       "ubm5qXfeeafIgziKOtjAYDCoevXqKUCdOHGiyOkPm1cppRYuXKgsLCzUqVOnShxXVlOnTlV//vln\\\n",
       "kdPS09NVkyZN1OjRows9/uyzz95zsE1RduzYoYKCgpSNjY0KCgpSW7ZsUTVq1FALFiwoGFPU56A0\\\n",
       "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\\\n",
       "lDjAiIjIlH4BXpOt+i9OH4gAAAAASUVORK5CYII=\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        animea3d9a997ba2429fbd1b76f5e6f09474 = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff860115a10>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "animate_AB_line(lambda x: np.cbrt(x), None, r\"\\sqrt[3]{x}\", 0,\n",
    "                axis=[-2.1, 2.1, -1.4, 1.4])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XM4SCdrL5vje"
   },
   "source": [
    "Now let's see how to actually differentiate a function (i.e., find its derivative)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9ElT95A6ZDTi"
   },
   "source": [
    "# Differentiating a function"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "8cTI3LmRZBKE"
   },
   "source": [
    "The previous discussion leads to the following definition:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mACDlgXT63eo"
   },
   "source": [
    "<hr />\n",
    "\n",
    "The **derivative** of a function $f(x)$ at $x = x_\\mathrm{A}$ is noted $f'(x_\\mathrm{A})$, and it is defined as:\n",
    "\n",
    "$f'(x_\\mathrm{A}) = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim\\dfrac{f(x_\\mathrm{B}) - f(x_\\mathrm{A})}{x_\\mathrm{B} - x_\\mathrm{A}}$\n",
    "\n",
    "<hr />"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "TkID_gVd2g7x"
   },
   "source": [
    "Don't be scared, this is simpler than it looks! You may recognize the _rise over run_ equation $\\dfrac{y_\\mathrm{B} - y_\\mathrm{A}}{x_\\mathrm{B} - x_\\mathrm{A}}$ that we discussed earlier. That's just the slope of the $\\mathrm{(AB)}$ line. And the notation $\\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim$ means that we are making $x_\\mathrm{B}$ approach infinitely close to $x_\\mathrm{A}$. So in plain English, $f'(x_\\mathrm{A})$ is the value that the slope of the $\\mathrm{(AB)}$ line approaches when $\\mathrm{B}$ gets infinitely close to $\\mathrm{A}$. This is just a formal way of saying exactly the same thing as earlier."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "5TAe9ANZXoDK"
   },
   "source": [
    "## Example: finding the derivative of $x^2$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "1Hab-C8p8GPw"
   },
   "source": [
    "Let's look at a concrete example. Let's see if we can determine what the slope of the $y=x^2$ curve is, at any point $\\mathrm{A}$ (try to understand each line, I promise it's not that hard):\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x_\\mathrm{A}) \\, && = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim\\dfrac{f(x_\\mathrm{B}) - f(x_\\mathrm{A})}{x_\\mathrm{B} - x_\\mathrm{A}} \\\\\n",
    "&& = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim\\dfrac{{x_\\mathrm{B}}^2 - {x_\\mathrm{A}}^2}{x_\\mathrm{B} - x_\\mathrm{A}} \\quad && \\text{since } f(x) = x^2\\\\\n",
    "&& = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim\\dfrac{(x_\\mathrm{B} - x_\\mathrm{A})(x_\\mathrm{B} + x_\\mathrm{A})}{x_\\mathrm{B} - x_\\mathrm{A}}\\quad && \\text{since } {x_\\mathrm{A}}^2 - {x_\\mathrm{B}}^2 = (x_\\mathrm{A}-x_\\mathrm{B})(x_\\mathrm{A}+x_\\mathrm{B})\\\\\n",
    "&& = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim(x_\\mathrm{B} + x_\\mathrm{A})\\quad && \\text{since the two } (x_\\mathrm{B} - x_\\mathrm{A}) \\text{ cancel out}\\\\\n",
    "&& = \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim x_\\mathrm{B} \\, + \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim x_\\mathrm{A}\\quad && \\text{since the limit of a sum is the sum of the limits}\\\\\n",
    "&& = x_\\mathrm{A} \\, + \\underset{x_\\mathrm{B} \\to x_\\mathrm{A}}\\lim x_\\mathrm{A} \\quad && \\text{since } x_\\mathrm{B}\\text{ approaches } x_\\mathrm{A} \\\\\n",
    "&& = x_\\mathrm{A} + x_\\mathrm{A} \\quad && \\text{since } x_\\mathrm{A} \\text{ remains constant when } x_\\mathrm{B}\\text{ approaches } x_\\mathrm{A} \\\\\n",
    "&& = 2 x_\\mathrm{A}\n",
    "\\end{split}\n",
    "$\n",
    "\n",
    "That's it! We just proved that the slope of $y = x^2$ at any point $\\mathrm{A}$ is $f'(x_\\mathrm{A}) = 2x_\\mathrm{A}$. What we have done is called **differentiation**: finding the derivative of a function."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "IecILr3XK1Mn"
   },
   "source": [
    "Note that we used a couple of important properties of limits. Here are the main properties you need to know to work with derivatives:\n",
    "\n",
    "* $\\underset{x \\to k}\\lim c = c \\quad$ if $c$ is some constant value that does not depend on $x$, then the limit is just $c$.\n",
    "* $\\underset{x \\to k}\\lim x = k \\quad$ if $x$ approaches some value $k$, then the limit is $k$.\n",
    "* $\\underset{x \\to k}\\lim\\,\\left[f(x) + g(x)\\right] = \\underset{x \\to k}\\lim f(x) + \\underset{x \\to k}\\lim g(x) \\quad$ the limit of a sum is the sum of the limits\n",
    "* $\\underset{x \\to k}\\lim\\,\\left[f(x) \\times g(x)\\right] = \\underset{x \\to k}\\lim f(x) \\times \\underset{x \\to k}\\lim g(x) \\quad$ the limit of a product is the product of the limits\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ebb31wJp72Zn"
   },
   "source": [
    "**Important note:** in Deep Learning, differentiation is almost always performed automatically by the framework you are using (such as TensorFlow or PyTorch). This is called auto-diff, and I did [another notebook](https://github.com/ageron/handson-ml2/blob/master/extra_autodiff.ipynb) on that topic. However, you should still make sure you have a good understanding of derivatives, or else they will come and bite you one day, for example when you use a square root in your cost function without realizing that its derivative approaches infinity when $x$ approaches 0 (tip: you should use $\\sqrt{x+\\epsilon}$ instead, where $\\epsilon$ is some small constant, such as $10^{-4}$)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "iUbStNR19xuJ"
   },
   "source": [
    "You will often find a slightly different (but equivalent) definition of the derivative. Let's derive it from the previous definition. First, let's define $\\epsilon = x_\\mathrm{B} - x_\\mathrm{A}$. Next, note that $\\epsilon$ will approach 0 as $x_\\mathrm{B}$ approaches $x_\\mathrm{A}$. Lastly, note that $x_\\mathrm{B} = x_\\mathrm{A} + \\epsilon$. With that, we can reformulate the definition above like so:\n",
    "\n",
    "$f'(x_\\mathrm{A}) = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x_\\mathrm{A} + \\epsilon) - f(x_\\mathrm{A})}{\\epsilon}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "CqvPHwZaHJAq"
   },
   "source": [
    "While we're at it, let's just rename $x_\\mathrm{A}$ to $x$, to get rid of the annoying subscript A and make the equation simpler to read:\n",
    "\n",
    "<hr />\n",
    "\n",
    "$f'(x) = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x + \\epsilon) - f(x)}{\\epsilon}$\n",
    "\n",
    "<hr />"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "SSGmiDApBEAX"
   },
   "source": [
    "Okay! Now let's use this new definition to find the derivative of $f(x) = x^2$ at any point $x$, and (hopefully) we should find the same result as above (except using $x$ instead of $x_\\mathrm{A}$):\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) \\, && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x + \\epsilon) - f(x)}{\\epsilon} \\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{(x + \\epsilon)^2 - {x}^2}{\\epsilon} \\quad && \\text{since } f(x) = x^2\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{{x}^2 + 2x\\epsilon + \\epsilon^2 - {x}^2}{\\epsilon}\\quad && \\text{since } (x + \\epsilon)^2 = {x}^2 + 2x\\epsilon + \\epsilon^2\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{2x\\epsilon + \\epsilon^2}{\\epsilon}\\quad && \\text{since the two } {x}^2 \\text{ cancel out}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim \\, (2x + \\epsilon)\\quad && \\text{since } 2x\\epsilon \\text{ and } \\epsilon^2 \\text{ can both be divided by } \\epsilon\\\\\n",
    "&& = 2 x\n",
    "\\end{split}\n",
    "$\n",
    "\n",
    "Yep! It works out."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "tnzKmXysX5QF"
   },
   "source": [
    "## Notations"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Zu6u_8bw7ZUc"
   },
   "source": [
    "A word about notations: there are several other notations for the derivative that you will find in the literature:\n",
    "\n",
    "$f'(x) = \\dfrac{\\mathrm{d}f(x)}{\\mathrm{d}x} = \\dfrac{\\mathrm{d}}{\\mathrm{d}x}f(x)$\n",
    "\n",
    "This notation is also handy when a function is not named. For example $\\dfrac{\\mathrm{d}}{\\mathrm{d}x}[x^2]$ refers to the derivative of the function $x \\mapsto x^2$.\n",
    "\n",
    "Moreover, when people talk about the function $f(x)$, they sometimes leave out \"$(x)$\", and they just talk about the function $f$. When this is the case, the notation of the derivative is also simpler:\n",
    "\n",
    "$f' = \\dfrac{\\mathrm{d}f}{\\mathrm{d}x} = \\dfrac{\\mathrm{d}}{\\mathrm{d}x}f$\n",
    "\n",
    "The $f'$ notation is Lagrange's notation, while $\\dfrac{\\mathrm{d}f}{\\mathrm{d}x}$ is Leibniz's notation.\n",
    "\n",
    "There are also other less common notations, such as Newton's notation $\\dot y$ (assuming $y = f(x)$) or Euler's notation $\\mathrm{D}f$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "NIOYmhljX-ST"
   },
   "source": [
    "## Plotting the tangent to a curve"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "hLxiC5r4Xk3N"
   },
   "source": [
    "Let's use the equation $f'(x) = 2x$ to plot the tangent to the $y=x^2$ curve at various values of $x$ (you can click on the play button under the graphs to play the animation):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 670
    },
    "colab_type": "code",
    "id": "ugfKA3shvvGo",
    "outputId": "c1b303df-65b3-4b4e-fbf0-6c16087112b1"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_img4069ab61593447c6a60b34327518ba24\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_slider4069ab61593447c6a60b34327518ba24\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"anim4069ab61593447c6a60b34327518ba24.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim4069ab61593447c6a60b34327518ba24.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_select4069ab61593447c6a60b34327518ba24\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_4069ab61593447c6a60b34327518ba24\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_4069ab61593447c6a60b34327518ba24\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_4069ab61593447c6a60b34327518ba24\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_4069ab61593447c6a60b34327518ba24\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_4069ab61593447c6a60b34327518ba24\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_4069ab61593447c6a60b34327518ba24\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_img4069ab61593447c6a60b34327518ba24\";\n",
       "    var slider_id = \"_anim_slider4069ab61593447c6a60b34327518ba24\";\n",
       "    var loop_select_id = \"_anim_loop_select4069ab61593447c6a60b34327518ba24\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "AAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\\\n",
       "dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdd1wUZ/4H8M/C0qv0piggUgUhIFbU\\\n",
       "2MASTYymqlGjcvpDz5gziTFePCXFmDuj3ikmZ4kxYkliLKBJFGNURCMgCCIWkA7SpLPsPr8/iHsS\\\n",
       "2i7s7swu3/fr5SthZ5jnM+PwdXjmmWcEjDEGQgghvKPFdQBCCCHtowJNCCE8RQWaEEJ4igo0IYTw\\\n",
       "FBVoQgjhKSrQhBDCU1SgCSGEp6hAE0IIT1GBJoQQnqICTQghPEUFmhBCeIoKNCGE8BQVaEII4Skq\\\n",
       "0IQQwlNUoAkhhKeoQBNCCE9RgSaEEJ6iAk0IITxFBZoQQniKCjQhhPAUFWhCCOEpKtCEEMJTVKAJ\\\n",
       "IYSnqEATQghPUYEmhBCeogJNCCE8RQWaEEJ4igo0IYTwFBVoQgjhKSrQhBDCU1SgCSGEp6hAE0II\\\n",
       "T1GBJoQQnqICTQghPEUFmhBCeIoKNCGE8BQVaEII4Skq0IQQwlNUoAkhhKeoQBNCCE9RgSaEEJ6i\\\n",
       "Ak0IITxFBZoQQniKCjQhhPAUFWhCCOEpKtCEEMJTVKAJIYSnqEATQghPUYEmyM3NxZgxY+Dl5QU/\\\n",
       "Pz989913XEcihAAQMMYY1yEItwoLC1FcXAx/f3+UlJQgMDAQmZmZMDQ05DoaIb0aXUErwO7du+Hi\\\n",
       "4gKhUIglS5agoqICtra2uHfvnszbmDVrFj7//HMlpuyYvb09/P39AQA2Njbo06cPHj16pPIcU6dO\\\n",
       "xfz58+X+vjFjxmD58uWKD0QIx6hA99Dt27cRERGBLVu2IDc3F1u2bEFUVBTCw8Ph6uoq83bWr1+P\\\n",
       "jRs3oqqqSolpu3b9+nWIRCL07duX0xztUXUh1oTCr8h90ITjoW6oQPfQjz/+CB8fH8ycORP29vbQ\\\n",
       "0tLCl19+iYULF8q1HV9fX7i4uODAgQNKStq1srIyzJ07F1999RUEAgFnOQghf2AaytHRkW3ZsqXV\\\n",
       "Zzdv3mR6enrs1q1bCmlj4MCBDID0z4wZM9iRI0eYhYUFk0gkrdY9fPgw09XVZdnZ2dLPIiMjmYuL\\\n",
       "CysqKmKMMfbhhx+yESNGKCSbvG03NDSwUaNGsf3793e5vdjYWDZy5Ehmbm7O+vTpwyZOnMjS09Ol\\\n",
       "y0NDQ1lERAR79913maWlJbO2tmZvvfUWE4vF0nVqa2vZvHnzmJGREbOxsWGbNm1iU6ZMYfPmzWu3\\\n",
       "zXnz5rU61gDYgwcPZG5PIpGwTz75hLm4uDB9fX3m4+PDvv766w73saP2utp3WfPU1NSw119/Xbr/\\\n",
       "UVFRbfa/q8xdtdPZMZP371SebclyvvWUKtrgA40t0LNmzWIvvfRSq8/GjRvHli1b1mbdTZs2MSMj\\\n",
       "o07//Prrr22+r7i4mLm7u7ONGzeywsJCVlVVxSIjI9mECRParCuRSFhgYCBbtGgRY4yxzZs3M2tr\\\n",
       "a3bnzh3pOrGxsUxHR4fV1dUpLKMsbUskEvbSSy+x9evXd3A0Wzt69Cg7evQou3PnDktJSWEvvvgi\\\n",
       "c3V1ZY2NjYyxlsJhamrK1q1bxzIzM1lMTAzT1tZmBw8elG4jIiKCOTg4sLi4OJaamspmzZrFTExM\\\n",
       "OizQlZWVbNiwYeyNN95ghYWFrLCwkDU3N8vc3nvvvcfc3d1ZbGwsu3//Pvvmm2+YoaEhO3nypFzt\\\n",
       "dbXvsuZZsmQJ69evHzt79ixLS0tjc+bMYaampq32v6vMXbXT2TGT9+9Unm3Jcq4/0d3zWp421JnG\\\n",
       "FugtW7YwV1dX6dfff/8969OnD3v06FGbdcvKylhWVlanf9ormvX19UwoFLLz589LP3vuuefY3Llz\\\n",
       "28105swZJhQK2UcffcSMjY1ZYmJiq+UpKSkMALt7967CMsrS9sWLF5lAIGB+fn7SPzdv3uxwW39W\\\n",
       "U1PDtLS02MWLFxljLYUjJCSk1Trjx49nCxcuZIwxVl1dzXR1ddmBAweky6urq5mZmVmHBfrJdtv7\\\n",
       "B7ar9mpqapi+vn6bH/QVK1awsLAwudt72p/3XZY81dXVTEdHh3377bettmNubi7df1kyd9WOrPsg\\\n",
       "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\\\n",
       "nz6NPXv24MSJEygsLER0dDT+/ve/t1onKioK4eHhcHV1lXm769evx8aNG1FVVaXgxIpDBUN+fz5f\\\n",
       "hg8f3u56qjy2mvL3qKj90JTjoQhqX6Dv3r0Le3t7DB8+HHZ2dtDV1W21vK6uDl9++SUWLlwo13Z9\\\n",
       "fX3h4uKCAwcOKDIu4VhX5wshvMJUaN++fczCwoI1NDS0+vyVV15h06ZNk3t78+bNYwCkf5ydndm8\\\n",
       "efPY+vXrpescOXKEWVhYMIlEIv2spKSE2dnZsQ8//FD6WUpKCtPT02NHjhyRfvbhhx+yESNGdJoh\\\n",
       "NjaWjRw5kpmbm7M+ffqwiRMnsvT09FbrhIaGsoiICPbuu+8yS0tLZm1tzd566y0mFosZY4zV1tay\\\n",
       "efPmMSMjI2ZjY8M2bdrEpkyZwubNmyfzvgNgDx486LItxhiTSCTsk08+YS4uLkxfX5/5+Piwr7/+\\\n",
       "utP9vHDhAhs6dCgzMjJipqamLDg4mKWmpkqzTJkyRbpuQ0MDW7FiBbOxsWF6enps6NCh7OLFi22O\\\n",
       "yZIlS1hkZCQzNzdn5ubmbPXq1T3O2Vnb7Z0vXB/bjtpirOtzS5Y8NTU17PXXX5eeW1FRUW3OLVky\\\n",
       "d9VWZ/vxtK72SdbtMMbY4cOHma6uLsvOzpZ+FhkZyVxcXFhRUVGHx1weqmijMyot0HV1dczc3JzF\\\n",
       "xMRIP6usrGQGBgbshx9+YIwxtmnTJmZkZNTpn19//VX6vR988AFzcnJihYWFrKSkpE2BjoyMZBMm\\\n",
       "TGiTJS4ujuno6LDLly+zuro65uXlxebPn99qndjYWKajo8Pq6uo63KejR4+yo0ePsjt37rCUlBT2\\\n",
       "4osvMldXV9bY2ChdJzQ0lJmamrJ169axzMxMFhMTw7S1tdnBgwcZY4xFREQwBwcHFhcXx1JTU9ms\\\n",
       "WbOYiYlJpwW6srKSDRs2jL3xxhussLCQFRYWsubm5i7bYoyx9957j7m7u7PY2Fh2//599s033zBD\\\n",
       "Q0N28uTJdtsSiUTM3NycvfXWW+zu3bssIyODffPNN9IfrD8X6MjISGZnZ8dOnjzJ0tPT2aJFi5iR\\\n",
       "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\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        anim4069ab61593447c6a60b34327518ba24 = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff7f01165d0>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "def animate_tangent(f, fp, f_str):\n",
    "    n_frames = 200\n",
    "    x_min, x_max = -1000, 1000\n",
    "\n",
    "    fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(5, 8), sharex=True)\n",
    "\n",
    "    # plot f\n",
    "    xs = np.linspace(-2.1, 2.1, 500)\n",
    "    ys = f(xs)\n",
    "    ax1.plot(xs, ys)\n",
    "\n",
    "    # plot tangent\n",
    "    line_tangent, = ax1.plot([x_min, x_max], [0, 0])\n",
    "\n",
    "    # plot f'\n",
    "    xs = np.linspace(-2.1, 2.1, 500)\n",
    "    ys = fp(xs)\n",
    "    ax2.plot(xs, ys, \"r-\")\n",
    "\n",
    "    # plot points A\n",
    "    point_A1, = ax1.plot(0, 0, \"bo\")\n",
    "    point_A2, = ax2.plot(0, 0, \"bo\")\n",
    "\n",
    "    show([-2.1, 2.1, 0, 2.8], ax=ax1, ylabel=\"$f(x)$\",\n",
    "        title=r\"$y=f(x)=\" + f_str + \"$ and the tangent at $x=x_\\mathrm{A}$\")\n",
    "    show([-2.1, 2.1, -4.2, 4.2], ax=ax2, ylabel=\"$f'(x)$\",\n",
    "        title=r\"y=f'(x) and the slope of the tangent at $x=x_\\mathrm{A}$\")\n",
    "\n",
    "    def update_graph(i):\n",
    "        x = 1.5 * np.sin(2 * np.pi * i / n_frames)\n",
    "        f_x = f(x)\n",
    "        df_dx = fp(x)\n",
    "        offset = f_x - df_dx * x\n",
    "        line_tangent.set_data([x_min, x_max],\n",
    "                              [df_dx * x_min + offset, df_dx * x_max + offset])\n",
    "        point_A1.set_data(x, f_x)\n",
    "        point_A2.set_data(x, df_dx)\n",
    "        return line_tangent, point_A1, point_A2\n",
    "\n",
    "    anim = animation.FuncAnimation(fig, update_graph,\n",
    "                                  init_func=lambda: update_graph(0),\n",
    "                                  frames=n_frames,\n",
    "                                  interval=20,\n",
    "                                  blit=True)\n",
    "    plt.close()\n",
    "    return anim\n",
    "\n",
    "def f(x):\n",
    "  return x**2\n",
    "\n",
    "def fp(x):\n",
    "  return 2*x\n",
    "\n",
    "animate_tangent(f, fp, \"x^2\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "-cFmqj7LMtJI"
   },
   "source": [
    "<hr />\n",
    "\n",
    "**Note:** consider the tangent line to the curve $y=f(x)$ at some point $\\mathrm{A}$. What is its equation? Well, since the tangent is a straight line, its equation must look like:\n",
    "\n",
    "$y = \\alpha x + \\beta$\n",
    "\n",
    "where $\\alpha$ is the slope of the line, and $\\beta$ is the offset (i.e., the $y$ coordinate of the point at which the line crosses the vertical axis). We already know that the slope of the tangent line at point $\\mathrm{A}$ is the derivative of $f(x)$ at that point, so:\n",
    "\n",
    "$\\alpha = f'(x_\\mathrm{A})$\n",
    "\n",
    "But what about the offset $\\beta$? Well we also know that the tangent line touches the curve at point $\\mathrm{A}$, so we know that $\\alpha x_\\mathrm{A} + \\beta = f(x_\\mathrm{A})$. So:\n",
    "\n",
    "$\\beta = f(x_\\mathrm{A}) - f'(x_\\mathrm{A})x_\\mathrm{A}$\n",
    "\n",
    "So we get the following equation for the tangent:\n",
    "\n",
    "$y = f(x_\\mathrm{A}) + f'(x_\\mathrm{A})(x - x_\\mathrm{A})$\n",
    "\n",
    "For example, the tangent to the $y=x^2$ curve is given by:\n",
    "\n",
    "$y = {x_\\mathrm{A}}^2 + 2x_\\mathrm{A}(x - x_\\mathrm{A}) = 2x_\\mathrm{A}x - x_\\mathrm{A}^2$\n",
    "<hr />"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vUT-AtXrYEVp"
   },
   "source": [
    "# Differentiation rules"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Vev7qaj1ZLBB"
   },
   "source": [
    "One very important rule is that **the derivative of a sum is the sum of the derivatives**. More precisely, if we define $f(x) = g(x) + h(x)$, then $f'(x) = g'(x) + h'(x)$. This is quite easy to prove:\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon) + h(x+\\epsilon) - g(x) - h(x)}{\\epsilon} && \\quad \\text{using }f(x) = g(x) + h(x) \\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon) - g(x) + h(x+\\epsilon) - h(x)}{\\epsilon} && \\quad \\text{just moving terms around}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon} + \\underset{\\epsilon \\to 0}\\lim\\dfrac{h(x+\\epsilon) - h(x)}{\\epsilon} && \\quad \\text{since the limit of a sum is the sum of the limits}\\\\\n",
    "&& = g'(x) + h'(x) && \\quad \\text{using the definitions of }g'(x) \\text{ and } h'(x)\n",
    "\\end{split}\n",
    "$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "oAPCTc3rbKIc"
   },
   "source": [
    "Similarly, it is possible to show the following important rules (I've included the proofs at the end of this notebook, in case you're curious):\n",
    "\n",
    "|                  | Function $f$ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Derivative $f'$ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |\n",
    "| ---------------- |------------------- | ------------------------------- |\n",
    "| **Constant**     | $f(x) = c$         | $f'(x) = 0$                     |\n",
    "| **Sum**          | $f(x) = g(x) + h(x)$ | $f'(x) = g'(x) + h'(x)$       |\n",
    "| **Product**      | $f(x) = g(x) h(x)$ | $f'(x) = g(x)h'(x) + g'(x)h(x)$ |\n",
    "| **Quotient**     | $f(x) = \\dfrac{g(x)}{h(x)}$ | $f'(x) = \\dfrac{g'(x)h(x) - g(x)h'(x)}{h^2(x)}$ |\n",
    "| **Power**        | $f(x) = x^r$ with $r \\neq 0$ | $f'(x) = rx^{r-1}$    |\n",
    "| **Exponential**  | $f(x) = \\exp(x)$   | $f'(x)=\\exp(x)$                 |\n",
    "| **Logarithm**    | $f(x) = \\ln(x)$    | $f'(x) = \\dfrac{1}{x} $         |\n",
    "| **Sin**          | $f(x) = \\sin(x)$   | $f'(x) = \\cos(x) $              |\n",
    "| **Cos**          | $f(x) = \\cos(x)$   | $f'(x) = -\\sin(x) $             |\n",
    "| **Tan**          | $f(x) = \\tan(x)$   | $f'(x) = \\dfrac{1}{\\cos^2(x)}$  |\n",
    "| **Chain Rule**   | $f(x) = g(h(x))$ | $f'(x) = g'(h(x))\\,h'(x)$  |\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mnywx0pgMCLA"
   },
   "source": [
    "---\n",
    "\n",
    "Let's try differentiating a simple function using the above rules: we will find the derivative of $f(x)=x^3+\\cos(x)$. Using the rule for the derivative of sums, we find that $f'(x)=\\dfrac{\\mathrm{d}}{\\mathrm{d}x}[x^3] + \\dfrac{\\mathrm{d}}{\\mathrm{d}x}[\\cos(x)]$. Using the rule for the derivative of powers and for the $\\cos$ function, we find that $f'(x) = 3x^2 - \\sin(x)$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "n6HwqWcADMVk"
   },
   "source": [
    "---\n",
    "\n",
    "Let's try a harder example: let's find the derivative of $f(x) = \\sin(2 x^2) + 1$. First, let's define $u(x)=\\sin(x) + 1$ and $v(x) = 2x^2$. Using the rule for sums, we find that $u'(x)=\\dfrac{\\mathrm{d}}{\\mathrm{d}x}[sin(x)] + \\dfrac{\\mathrm{d}}{\\mathrm{d}x}[1]$. Since the derivative of the $\\sin$ function is $\\cos$, and the derivative of constants is 0, we find that $u'(x)=\\cos(x)$. Next, using the product rule, we find that $v'(x)=2\\dfrac{\\mathrm{d}}{\\mathrm{d}x}[x^2] + \\dfrac{\\mathrm{d}}{\\mathrm{d}x}[2]\\,x^2$. Since the derivative of a constant is 0, the second term cancels out. And since the power rule tells us that the derivative of $x^2$ is $2x$, we find that $v'(x)=4x$. Lastly, using the chain rule, since $f(x)=u(v(x))$, we find that $f'(x)=u'(v(x))\\,v'(x)=\\cos(2x^2)\\,4x$.\n",
    "\n",
    "Let's plot $f$ followed by $f'$, and let's use $f'(x_\\mathbf{A})$ to find the slope of the tangent at some point $\\mathbf{A}$:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 670
    },
    "colab_type": "code",
    "id": "QJYnQ1JSIVfh",
    "outputId": "30cc1238-1793-43e3-af53-f60b623db28d"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_img169490c4c4664f3c8432d3b5400bdd27\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_slider169490c4c4664f3c8432d3b5400bdd27\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"anim169490c4c4664f3c8432d3b5400bdd27.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim169490c4c4664f3c8432d3b5400bdd27.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_select169490c4c4664f3c8432d3b5400bdd27\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_169490c4c4664f3c8432d3b5400bdd27\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_169490c4c4664f3c8432d3b5400bdd27\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_169490c4c4664f3c8432d3b5400bdd27\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_169490c4c4664f3c8432d3b5400bdd27\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_169490c4c4664f3c8432d3b5400bdd27\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_169490c4c4664f3c8432d3b5400bdd27\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_img169490c4c4664f3c8432d3b5400bdd27\";\n",
       "    var slider_id = \"_anim_slider169490c4c4664f3c8432d3b5400bdd27\";\n",
       "    var loop_select_id = \"_anim_loop_select169490c4c4664f3c8432d3b5400bdd27\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "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\\\n",
       "P4//i9gxDgAAAABJRU5ErkJggg==\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        anim169490c4c4664f3c8432d3b5400bdd27 = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff8a21a1810>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "animate_tangent(lambda x: np.sin(2*x**2) + 1, lambda x: 4*x*np.cos(2*x**2), r\"\\sin(2x^2)+1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The chain rule\n",
    "\n",
    "The chain rule is easier to remember using Leibniz's notation:\n",
    "\n",
    "If $f(x)=g(h(x))$ and $y=h(x)$, then: $\\dfrac{\\mathrm{d}f}{\\mathrm{d}x} = \\dfrac{\\mathrm{d}f}{\\mathrm{d}y} \\dfrac{\\mathrm{d}y}{\\mathrm{d}x}$\n",
    "\n",
    "Indeed, $\\dfrac{\\mathrm{d}f}{\\mathrm{d}y} = f'(y) = f'(h(x))$ and $\\dfrac{\\mathrm{d}y}{\\mathrm{d}x}=h'(x)$.\n",
    "\n",
    "It is possible to chain many functions. For example, if $f(x)=g(h(i(x)))$, and we define $y=i(x)$ and $z=h(y)$, then $\\dfrac{\\mathrm{d}f}{\\mathrm{d}x} = \\dfrac{\\mathrm{d}f}{\\mathrm{d}z} \\dfrac{\\mathrm{d}z}{\\mathrm{d}y} \\dfrac{\\mathrm{d}y}{\\mathrm{d}x}$. Using Lagrange's notation, we get $f'(x)=g'(z)\\,h'(y)\\,i'(x)=g'(h(i(x)))\\,h'(i(x))\\,i'(x)$\n",
    "\n",
    "The chain rule is crucial in Deep Learning, as a neural network is basically as a long composition of functions. For example, a 3-layer dense neural network corresponds to the following function: $f(\\mathbf{x})=\\operatorname{Dense}_3(\\operatorname{Dense}_2(\\operatorname{Dense}_1(\\mathbf{x})))$ (in this example, $\\operatorname{Dense}_3$ is the output layer).\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "JvAsOt0yAypb"
   },
   "source": [
    "# Derivatives and optimization\n",
    "\n",
    "When trying to optimize a function $f(x)$, we look for the values of $x$ that minimize (or maximize) the function.\n",
    "\n",
    "It is important to note that when a function reaches a minimum or maximum, assuming it is differentiable at that point, the derivative will necessarily be equal to 0. For example, you can check the above animation, and notice that whenever the function $f$ (in the upper graph) reaches a maximum or minimum, then the derivative $f'$ (in the lower graph) is equal to 0.\n",
    "\n",
    "So one way to optimize a function is to differentiate it and analytically find all the values for which the derivative is 0, then determine which of these values optimize the function (if any). For example, consider the function $f(x)=\\dfrac{1}{4}x^4 - x^2 + \\dfrac{1}{2}$. Using the derivative rules (specifically, the sum rule, the product rule, the power rule and the constant rule), we find that $f'(x)=x^3 - 2x$. We look for the values of $x$ for which $f'(x)=0$, so $x^3-2x=0$, and therefore $x(x^2-2)=0$. So $x=0$, or $x=\\sqrt2$ or $x=-\\sqrt2$. As you can see on the following graph of $f(x)$, these 3 values correspond to local extrema. Two global minima $f\\left(\\sqrt2\\right)=f\\left(-\\sqrt2\\right)=-\\dfrac{1}{2}$ and one local maximum $f(0)=\\dfrac{1}{2}$.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 312
    },
    "colab_type": "code",
    "id": "fQKvFaf4AXgu",
    "outputId": "4880d3c9-02ba-4685-ca00-2c4f4ec7d430"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "def f(x):\n",
    "  return 1/4 * x**4 - x**2 + 1/2\n",
    "\n",
    "xs = np.linspace(-2.1, 2.1, 500)\n",
    "ys = f(xs)\n",
    "plt.plot(xs, ys)\n",
    "plt.plot([np.sqrt(2), np.sqrt(2)], [0, f(np.sqrt(2))], \"k--\")\n",
    "plt.plot([-np.sqrt(2), -np.sqrt(2)], [0, f(-np.sqrt(2))], \"k--\")\n",
    "plt.text(-np.sqrt(2), 0.1, r\"$-\\sqrt{2}$\",\n",
    "         fontsize=14, horizontalalignment=\"center\")\n",
    "plt.text(np.sqrt(2), 0.1, r\"$\\sqrt{2}$\",\n",
    "         fontsize=14, horizontalalignment=\"center\")\n",
    "show(axis=[-2.1, 2.1, -1.4, 1.4], title=r\"$y=f(x)=\\dfrac{1}{4}x^4 - x^2 + 5$\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ghbWt5dXDaDz"
   },
   "source": [
    "If a function has a local extremum at a point $x_\\mathrm{A}$ and is differentiable at that point, then $f'(x_\\mathrm{A})=0$. However, the reverse is not always true. For example, consider $f(x)=x^3$. Its derivative is $f'(x)=x^2$, which is equal to 0 at $x_\\mathrm{A}=0$. Yet, this point is _not_ an extremum, as you can see on the following diagram. It's just a single point where the slope is 0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 304
    },
    "colab_type": "code",
    "id": "iHRMtekMDXzz",
    "outputId": "6ced4763-8dc6-4714-df7a-334c61954f41"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEfCAYAAAC04jrjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXxcdb3/8dcn6b43LU1L95ZCKaXBprQUhLasBcW6oYBCUaCi4o9eRS/qvehV71X0XpXbK1bZESEgoiBUkKWlsnZf6ZYutOm+JW26pMnM5/dHJjiGTNaZc2Yy7+fjMY+c5XvOeefMZD45u7k7IiIidckJO4CIiKQvFQkREUlIRUJERBJSkRARkYRUJEREJCEVCRERSUhFQkREElKREBGRhFQkRDKQmb1pZsvNbJWZ3Rl2Hmm9TFdci2QeM+vm7ofMLBd4Hfiyuy8LO5e0PtqSkKxkZjeb2SYzqzKz35jZbjMb3oTpnzKzr6cyY33c/VCss13sJZISKhKSdcxsJPBr4BvAQOAoMMfdNzZhNv8B/JuZdU9BxEYxs3eAPcDL2oqQVFGRkGz0MWCVu/8JKANuAO5vygzcfSWwCfh80tM1PsMEoD9wlpmNDiuHtG4qEpJVzGw9cBdQYGYOHAGiwBu12l1lZhVmNjhu2N1mttHM8mODngWuSUHGxiwbeH+306vA1GTnEAEVCck+HwbWA/8G9AMeAhb7B8/geApYGWuHmd1OdUGY6u67Y20WAOPNrGPthZjZd8ysvIHX+Qky1rtsM+thZr1j4zoAlwJrm7c6ROrXJuwAIgE7BAwD3nD3XWbWE9hZu5G7u5l9B3jezDYC3wUudPcNcc12AG2Bk4HaxzNmA082kGV7XQMbsew84A9m1pbqf/SedPfnGliWSLOoSEi2GU31577mQG9HYHddDd39b2a2EPgRcKW7L6zV5FjcPGpPewA40NyQ9S3b3TcBhc2dt0hTaHeTZJuzgPfcvTTWvw/oWVdDM7sQKACMugtJXuzn3jqmbcnupsYsWyQQ2pKQbHMW/9iKAFhK9dlN/8TMCoCnga8BHwF+DFxWq9loYEfcMYp4zd7d1MhliwRCRUKyzVnAy3H9LwJ3mVkvd98PEDuraA7wc3d/wMwWACvMbLK7z4ub9nzghboW0tzdTU1YtkggdFsOyRpmZlRfF3G9u/85bvhbwKPu/iszy6P6dNj57v6luDZPAIPcfWKsvwPVu4Euc/e3k5SvUcsWCZKKhGQ9M5sK3A2McvdII6f5KjDN3S9NaTiRkOnAtWQ9d38B+BUwoAmTVVJ9zECkVdOWhIiIJKQtCRERSUhFQkREEsr4U2B79+7tQ4YMSTj+yJEjdO7cObhATaR8LZOu+datW0ckEmHUqFFhR0koXdddjWzLF3Vnzc7DdO3QhkF5nVo8v4byLV68eJ+7n9TgjNw9o1+FhYVen7lz59Y7PmzK1zLpmm/SpEleUFAQdox6peu6q5Ft+X731hYf/K/P+aIt+5Myv4byAYu8Ed+x2t0kIhKyaNR5+M0tjO7fjbGD6rxLTGhUJEREQvba+r1s2FPOTR8eRvU1n+lDRUJEJGS/nb+Jft078JEx/cKO8gEqEiIiIVpZUsZbm/bzxfOG0jY3/b6S0y+RiEgWuffvm+jSvg2fHT8w7Ch1UpEQEQlJycGjPL9yJ9eMH0i3Dm3DjlMnFQkRkZA8+MYWDPjCeUPDjpKQioSISAjKjlVStGArHx3Tj5N7fOAJuGlDRUJEJARFC7Zy5ESEm84fFnaUeqlIiIgErKIqwgNvbObc4b0Y3b972HHqpSIhIhKwpxaXsPtQBV+ZfErYURoUaJEws6lmts7Mis3sjgRtJpvZMjNbbWavBZlPRCTVqiJRZr+2kYKBPTjvlF5hx2lQYHeBNbNcqp/+dQlQAiw0s2fd/d24Nj2Ae4Cp7r7VzPoElU9EJAjPLt/BtgPHuPOjZ6TdLTjqEuSWxHig2N03ufsJoAiYVqvNtcDT7r4VwN33BJhPRCSlolHnnnkbGdm3KxeNzIz/gYN8nkR/YFtcfwkwoVabU4G2ZjYP6Arc7e6P1J6Rmc0AZgDk5+czb968hAstLy+vd3zYlK9l0jVfaWkpkUgkLbPVSNd1V6M15lu4q4riPRXcUtCe+fNTuzc9aeuvMfcTT8YLuAq4L67/OmBWrTb/B7wNdAZ6AxuAU+ubr54nkVrK1zx6nkTLtbZ80WjUr7h7vk/+2VyvikRTEypOJj5PogSIvznJAGBHHW1ecPcj7r4PmA8UBJRPRCRl5q3by+odh/jy5OHk5qT/sYgaQRaJhcAIMxtqZu2Aq4Fna7V5BjjfzNqYWSeqd0etCTCjiEjSuTv/N7eY/j068okP9Q87TpMEdkzC3avM7FbgRSAXeMDdV5vZLbHxs919jZm9AKwAolTvnloVVEYRkVSYv2Efi987yA8/PjotbwdenyAPXOPuc4A5tYbNrtX/M+BnQeYSEUkVd+fnL62nf4+OfHZcet4OvD6ZVdJERDLMq2v3sHxbKV+78BTatcm8r9zMSywikiFqtiIG5XXiU4UDwo7TLCoSIiIp8uLqXazecYjbLhqRccciamRmahGRNBeNOr94aQPDendm2lknhx2n2VQkRERS4PmVO1m3+zC3XTyCNhm6FQEqEiIiSVcVifLLl9czok8XPjomc7ciQEVCRCTp/rC4hI17j/CNS0/LqKur66IiISKSREdPVPGLl9ZTOLgnl52RH3acFlOREBFJovv/vpk9hyv49uUjM+J5EQ1RkRARSZL95RX8Zv4mLh2Vz7gheWHHSQoVCRGRJJn1ajHHKiN8a+rIsKMkjYqEiEgSvLf/CL9/5z0+M24gp/TpEnacpFGREBFJgp+9uI42OTn8y8Ujwo6SVCoSIiIttGjLAZ5bsZObzx9Kn24dwo6TVCoSIiItEI063//Lavp268Atk4eHHSfpVCRERFrgD4u3sWr7Ib59xUg6tQv0ET2BUJEQEWmmQ8cr+dmL6xg3uCcfK8js228koiIhItJMs17ZwP4jJ/jelWe0igvn6tL6to1ERAKwszzKg29u4TOFAzlzQPew46SMtiRERJrI3Xl83Qk6ts3l9stOCztOSqlIiIg00Yurd7Nib4TbLh7BSV3bhx0npVQkRESaoLyiiu8/u5qBXXOYfu6QsOOkXKBFwsymmtk6Mys2szvqaXe2mUXM7NNB5hMRacgvXlrP7sPHmX5Gu4x9bnVTBPYbmlku8CvgcmAUcI2ZjUrQ7i7gxaCyiYg0xqrtZTz4xmauHT+IU3rkhh0nEEGWwfFAsbtvcvcTQBEwrY52XwP+COwJMJuISL0iUee7f1pJXud2fOuy1nOX14YEeQpsf2BbXH8JMCG+gZn1Bz4BXAicnWhGZjYDmAGQn5/PvHnzEi60vLy83vFhU76WSdd8paWlRCKRtMxWI13XXY10y/fK1kqWl5zgS2Pas3TBG2mXr7ak5XP3QF7AVcB9cf3XAbNqtfkDcE6s+yHg0w3Nt7Cw0Oszd+7ceseHTflaJl3zTZo0yQsKCsKOUa90XXc10infjtKjPvrOF/xz977t0WjU3dMrX10aygcs8kZ8dwe5JVECDIzrHwDsqNVmHFAUu3KxN3CFmVW5+5+DiSgi8s/cnW8/vZKqqPOfnxjdaq+sTiTIIrEQGGFmQ4HtwNXAtfEN3H1oTbeZPQQ8pwIhImH6w+IS5q3by/evHMXgXp3DjhO4wIqEu1eZ2a1Un7WUCzzg7qvN7JbY+NlBZRERaYydZcf44XPvMn5IHtdPHBJ2nFAEeu8md58DzKk1rM7i4O43BJFJRKQu7s53nl5JZSTKTz89hpyc7NrNVKP1XwkiItIMf1yynbnr9vKty0YypHf27WaqoSIhIlLL9tJj/MdfVnP2kJ7ckAW33qiPioSISJxI1PmXJ5YRjTr/fVVB1u5mqqHnSYiIxJn92kYWbD7Af19VkJVnM9WmLQkRkZhl20r5xUvr+eiYfnxqbP+w46QFFQkREeBIRRW3FS0lv1sH/vMTZ2bdRXOJaHeTiAjw/WdXs+3AUYpmTKR7x7Zhx0kb2pIQkaz3x8Ul/GFxCV+ZfArjh+aFHSetqEiISFZbu+sQ3/3zSiYO68XMi0eEHSftqEiISNY6dLySLz+6hG4d2vK/13yINlnwpLmm0jEJEclK7s63/rCCrQeO8vjN53BS1/ZhR0pLKpsikpXuf30zL6zexR1TR+o4RD1UJEQk67xZvI8f/3UtU8/oy03nD214giymIiEiWWXLviN8+fdLGH5SZ3521RhdD9EAFQkRyRplxyq58eGF5Bjcd/3ZdO2g6yEaogPXIpIVqiJRvvb4Ut7bf5RHb5rAoF6dwo6UEVQkRCQr/Nectcxfv5effPJMzhnWK+w4GUO7m0Sk1Xvwjc088MZmvnDeEK4ePyjsOBlFRUJEWrW/LN/BD557l6ln9OXfPjIq7DgZR0VCRFqtN4v38Y0nl3P24Dx+efVZ5Gb5A4SaQ0VCRFqlVdvLmPG7xQzt3Zl7p4+jQ9vcsCNlJBUJEWl1Nu87wg0PLqRbhzY89MWzdevvFgi0SJjZVDNbZ2bFZnZHHeM/Z2YrYq83zawgyHwikvne23+Ea377Nu7OIzeOp1/3jmFHymiBFQkzywV+BVwOjAKuMbPaR5E2A5PcfQzwQ+C3QeUTkcy37cBRrr33HY5XRXj0pgmc0qdr2JEyXpBbEuOBYnff5O4ngCJgWnwDd3/T3Q/Get8GBgSYT0Qy2I7SY1x739scPl7JozdO4PR+3cKO1CqYuwezILNPA1Pd/aZY/3XABHe/NUH724GRNe1rjZsBzADIz88vLCoqSrjc8vJyunTpkoTfIDWUr2XSNd/MmTOJRCLMmjUr7CgJpeu6q9GUfPuPRblr4XEOn3C+eXYHhnVP/UHqTF9/U6ZMWezu4xqckbsH8gKuAu6L678OmJWg7RRgDdCrofkWFhZ6febOnVvv+LApX8uka75JkyZ5QUFB2DHqla7rrkZj8xXvOewT/+tlH/29F3zRlgOpDRUn09cfsMgb8d0d5G05SoCBcf0DgB21G5nZGOA+4HJ33x9QNhHJQKt3lHH9/QsAKJpxDmec3D3kRK1PkMckFgIjzGyombUDrgaejW9gZoOAp4Hr3H19gNlEJMMs2nKAq3/7Nu3b5PDkLRNVIFIksC0Jd68ys1uBF4Fc4AF3X21mt8TGzwbuBHoB98Tu8V7ljdlnJiJZ5W+rd3Fb0TL6de/A726aQP8eOs01VQK9C6y7zwHm1Bo2O677JuADB6pFRKD6GOr9r2/mP+esYUz/7tw3/Ww9mzrFdKtwEckIVZEo33t2Nb9/ZyuXj+7Lzz9zFh3b6VYbqaYiISJpr+xoJV8rWsr89Xv58uThfPPS08jRzfoCoSIhImlt9Y4yvvzoEnaWHeOuT53JZ8/W8yCCpCIhImnrqcUlfPdPK+nZqR1FMyZSOLhn2JGyjoqEiKSd45URHlpdwbxty5k4rBezrv0QvbvoAHUYVCREJK2s3lHGzKJlbNhTxS2ThnP7pafSJldPNQiLioSIpIVo1Ln375v477+to2endnyjsD1fu3xk2LGynoqEiIRu6/6jfOuPy3l70wGmntGXH3/yTJYvfDPsWIKKhIiEqDIS5f7XN/PLl9fTJieHn356DFcVDiB2xwVJAyoSIhKK5dtKuePplazZeYhLR+Xzg2mj6du9Q9ixpBYVCREJ1J7Dx/n539bzxKJt9OnantmfL2Tq6L5hx5IEVCREJBDHKyPc//pm7plbTEVVlC+cO5SZl4ygW4e2YUeTeqhIiEhKVUai/GnJdu5+ZQPbS49xyah8vnPF6Qzt3TnsaNIIjSoSZlYC/Nzdfx437EyqnxEx1t3fTVE+EclQVZEof1q6nVmvFrP1wFHO7N+dn101hnOH9w47mjRBY7ck3gLOrjXsl1Q/jlQFQkTed/REFX9csp37/r6J9/YfZXT/btw/fRwXjuyjs5YyUFOKxFdqeszs48CHgM+kIpSIZJ5dZcd55K0t/P6drZQdq2TMgO7ce/04Lj5dxSGTNbZIvA38j5nlAUeA/wZ+oGdQi2S3SNSZv2EvTyzYxstrdhN159JRfbnx/KGMG9xTxaEVaGyRWAycAMZRvQVRBfwqVaFEJL0V7znMM8t28NTiEnaWHSevcztuOHcI108cwqBencKOJ0nUqCLh7hVmthS4EpgOXOvulSlNJiJpZcPuwzy/cidzVu5k/e5yzOCCESdx50dHcdHp+bRro5vwtUZNOQX2LeA24CV3fy5FeUQkTRw7EWHBlgPMX7+X19bvpXhPdWE4e3Ae379yFJef2Y/8brpCurVrSpFYBkSBr6coi4iE6NiJCCtKSlm89SBvbdzPO5sPcKIqSrs2OYwfksd15wxm6ui+KgxZpilF4nPAb9x9darCiEgwjldGeO9QhD8uLmHVjjKWvHeQ1TsOURV1AE7p04XPTxjMBaf2ZsLQXnRslxtyYglLvUXCzHKAk4AbgDOBz7ZkYWY2FbgbyKX6Gouf1BpvsfFXAEeBG9x9SUuWKZKt3J29hyvYeuDo+68Ne8pZt+swm/cdIRJ1YDkd2uZQMKAHMy4YxthBPRk7uCd5nduFHV/SRENbEhcArwLrgE+5+8HmLsjMcqk+I+oSoARYaGbP1roY73JgROw1Afh17KdI1otEnfKKqurX8SrKKyo5dKyKfeUV7Cs/wd7DFewrr2Dv4Qr2HD7O9tJjHK+Mvj+9GfTv0ZGRfbtx+ei+RA5s45MXnsOQXp305DdJqN4i4e7zgGR9esYDxe6+CcDMioBpQHyRmAY84u4OvG1mPcysn7vvTDTTdevWMXny5IQLLS0tpUePHsnInxLK1zLNzVcVdaoiUaqiTjTqRNyJRJ2oV38ZR6NOFMed6ldNN9X/odd0ExsH1e1igziwdT3uTp/TxsbaVI+Jb/OPbo9rU/fwaCxffXJzjLa5ObGX0b5NLh3b5tC+TS7t2+bQvk0OOWYUA8WxdTdndut7b4OSLfmCvMFff2BbXH8JH9xKqKtNf+CfioSZzQBmALRt25bS0tKEC41EIvWOD5vytUztfFGHyihURp2qKFRGYt0OkShEYkWg/q/bfzCq/wP/R7dRc3lY/PD3f1pNjurqUlVZ9f7I+HY18609LwCL+7esZnCOQY7lxH5CrvF+d5sce78/tvSatVPdeQIqTkBFrd8t097bdJMt+YIsEnVdeln7b7UxbXD33wK/BRg3bpwvWrQo4ULnzZtX75ZG2JSvecqOVfLujkPMeWMJOd37Uby3nOI95ew+9M9fhR1zjGE9OtC3WwfyOrcjr3M7enZq9353945t6dy+DZ3a5dKpXRs6t8+lU9s2dGyX26Lz/idPnkxpaSnLli1r6a+aMun63tZQvpZpKF9jr4YPskiUAAPj+gcAO5rRRrLMiaooK7eXsmxbGStKSllRUsbmfUfeH9+5XQmn9OnCecN7M7xPFwb36sTJPTrSv0dHendpT26Obg0h0lxBFomFwAgzGwpsB64Grq3V5lng1tjxiglAWX3HI6R1qopEWbm9jLc27eetjftZtOUgxyojAPTr3oEz+3fn04UDGN2/O/s3reQTl03RPYJEUiSwIuHuVWZ2K/Ai1afAPuDuq83sltj42cAcqk9/Lab6FNgvBJVPwlVeUcX89Xt56d3dvLp2D2XHqu/6cmp+Fz4zbgATh/di7KCe9Kl1Ide8HTkqECIpFOiT6dx9DtWFIH7Y7LhuB74aZCYJz+HjlbywahfPrdjJWxv3cyISpUentlx0eh+mnNaHicN70btL+7BjimQ1Pb5UAlUViTJ/w17+tHQHL727i+OVUQbmdeT6iYO5eFQ+4wb31Dn7ImlERUICsefwcZ5YsI3HFmxlZ9lxenRqy6cLB/CJDw1g7KAe2mUkkqZUJCSllm0r5b6/b+KFVbuoijrnj+jN964cxYUjdWtpkUygIiFJ5+68XryPe+Zu5K1N++naoQ3XTxzC584ZxPCTuoQdT0SaQEVCksbdmbtuD798eQMrSsro07U9373idK6ZMIgu7fVRE8lE+suVpFi05QB3vbCWhVsOMrhXJ378yTP55Nj+tG+jW0yLZDIVCWmR4j2H+clf1/Lymj2c1LU9P/r4aD579kDa6gwlkVZBRUKapbyiilmvbOD+1zfTsW0u37zsNL5w3hA6tdNHSqQ10V+0NIm785cVO/nP599l96EKPjNuAN+aOlIXvYm0UioS0mg7So9xx9Mrmb9+L6P7d+PXny9k7KCeYccSkRRSkZAGuTtPLtrGj55bQ8Sd7185iusmDtHdVUWygIqE1OvA8SjTH1zI/PV7OWdYHj/9VAGDenUKO5aIBERFQhJ6+d3d/Psbx4hygh9MO4PPTxhMjrYeRLKKioR8wImqKHe9sJb7X9/M4G45PDTjfIb27hx2LBEJgYqE/JOt+49y6+NLWFFSxg3nDuG8LntUIESymIqEvO+N4n189bElRKPO7M8XMnV0X+bN2xt2LBEJkYqE4O489OYWfvT8Goaf1Jl7rx/H4F7aehARFYmsV1EV4c4/r+aJRdu4ZFQ+v/jsWboZn4i8T98GWazsaCU3/24RCzYf4P9deAozLz5VZy+JyD9RkchSO8uOMf2BBWzed4S7rz6LaWf1DzuSiKQhFYkstH73YaY/sIDDx6t4+AvjOfeU3mFHEpE0pSKRZRZuOcCNDy2kQ9tcnvzSREad3C3sSCKSxgK56b+Z5ZnZS2a2IfbzA3eFM7OBZjbXzNaY2Wozuy2IbNnkzeJ9XH//Anp3bc/TXzlXBUJEGhTUk2HuAF5x9xHAK7H+2qqAb7j76cA5wFfNbFRA+Vq9+ev38oWHFjIorxNPzJjIgJ66/5KINCyoIjENeDjW/TDw8doN3H2nuy+JdR8G1gA6mpoEc9fu4aZHFjHspC48dvMETuqqZz+ISOOYu6d+IWal7t4jrv+guyd8EIGZDQHmA6Pd/VAd42cAMwDy8/MLi4qKEi67vLycLl26ND98iqU639I9Vfzf0goGds3h9nEd6NKuaae4Zvv6a66ZM2cSiUSYNWtW2FESStd1V0P5WqahfFOmTFns7uManJG7J+UFvAysquM1DSit1fZgPfPpAiwGPtmY5RYWFnp95s6dW+/4sKUy3+sb9vqI78zxj836u5cePdGseWTz+muJSZMmeUFBQdgx6pWu666G8rVMQ/mARd6I79iknd3k7hcnGmdmu82sn7vvNLN+wJ4E7doCfwR+7+5PJytbNlq69SA3P7KIob078/AXx9O9Y9uwI4lIBgrqmMSzwPRY93TgmdoNzMyA+4E17v7zgHK1Smt3HeKGBxdyUtf2/O7G8fTo1C7sSCKSoYIqEj8BLjGzDcAlsX7M7GQzmxNrcx5wHXChmS2Lva4IKF+rsWXfEa67fwEd2+by6I0T6NOtQ9iRRCSDBXIxnbvvBy6qY/gO4IpY9+uAbhzUAvvLK7j+gQVURaI8fstEBubpNFcRaRldcd1KHK+McPMji9h96DhFM87hlD5dw44kIq2AikQrEI0633hyOUu3lXLPtWP50KCEZxeLiDRJUMckJIXuenEtz6/cybcvH8nlZ/YLO46ItCIqEhnu8QVb+c1rm/jchEHcfP6wsOOISCujIpHBFm45wL//eRUXnHoS//GxM6g+i1hEJHlUJDLUrrLjfPnRJQzo2ZFZ13yINrl6K0Uk+XTgOgNVVEW45dHFHD1Rxe9vmqCrqUUkZVQkMoy7871nVrNsWym//txYTuurU11FJHW0jyLDPLZgK0ULt/GVycN1JpOIpJyKRAZZvaOM/3j2XS449SS+celpYccRkSygIpEhyiuq+NpjS+nZuS2/+EwBuTk6k0lEUk/HJDKAu/Pvf17Flv1HeOzmc+jVRU+WE5FgaEsiAzy1uIQ/Ld3ObRedyjnDeoUdR0SyiIpEmivec5g7n1nNxGG9uPXCU8KOIyJZRkUijVVURbj1saV0apfL3VefpeMQIhI4HZNIY798eQNrdx3mgRvG6eFBIhIKbUmkqUVbDvCb1zZyzfiBXDgyP+w4IpKlVCTS0JGKKr7+5HL69+zIdz8yKuw4IpLFtLspDf3o+TVsO3iUJ2ZMpEt7vUUiEh5tSaSZuWv38PiCrcy4YBjjh+aFHUdEspyKRBo5dLySO55ewWn5Xfn6JaeGHUdERLub0slP/rqWvYcruPf6cbRvkxt2HBGRYLYkzCzPzF4ysw2xnz3raZtrZkvN7LkgsqWLdzbt57F3tnLjh4cyZkCPsOOIiADB7W66A3jF3UcAr8T6E7kNWBNIqjRxvDLCt59eycC8jvyLdjOJSBoJqkhMAx6OdT8MfLyuRmY2APgIcF9AudLC/71azKZ9R/jxJ8bQqZ32AIpI+jB3T/1CzErdvUdc/0F3/8AuJzN7Cvgx0BW43d0/mmB+M4AZAPn5+YVFRUUJl11eXk6XLl1a+Bukzrrd5fx0mTHx5DbcdGb63d013ddfuuabOXMmkUiEWbNmhR0loXRddzWUr2UayjdlypTF7j6uwRm5e1JewMvAqjpe04DSWm0P1jH9R4F7Yt2Tgecas9zCwkKvz9y5c+sdH6ZIJOpT/muOF/7wb36gvCLsOHVK5/Xnnr75Jk2a5AUFBWHHqFe6rrsaytcyDeUDFnkjvmOTtm/D3S9ONM7MdptZP3ffaWb9gD11NDsP+JiZXQF0ALqZ2aPu/vlkZUw3Ty7axqayKL/47On07Nwu7DgiIh8Q1DGJZ4Hpse7pwDO1G7j7t919gLsPAa4GXm3NBeLgkRPc9cJaTuuZw8fP6h92HBGROgVVJH4CXGJmG4BLYv2Y2clmNiegDGnlZ39bx6HjVXx+VHvMdAtwEUlPgZxK4+77gYvqGL4DuKKO4fOAeSkPFpIVJaU8vmArXzh3KAO71rXnTUQkPei2HAGLRp1/f2Y1vbu0Z+YlI8KOIyJSLxWJgD25aBvLt5Xy3StOp1uHtmHHERGpl4pEgA4dr+SnL65j/JA8pp11cthxREQapCIRoF/NLebg0RPceeUoHawWkYygIhGQbQeO8uDrW/jU2AGM7t897G+zPEkAAAqqSURBVDgiIo2iIhGQn7ywltwc4/ZLTws7iohIo6lIBGDxewd5fsVOZlwwjL7dO4QdR0Sk0VQkUszd+eFz79Kna3u+NGlY2HFERJpERSLF/rJiJ8u2lfLNy07TbcBFJOOoSKRQRVWEn76wllH9uvGpsQPCjiMi0mQqEilUtGAbJQePccflI8nJ0SmvIpJ5VCRS5OiJKma9Wsw5w/I4f0TvsOOIiDSLikSKPPjGFvaVV/CtqSN14ZyIZCwViRQoPXqC2a9t5OLT8xk76ANPaRURyRgqEikw+7VNlFdUcftlp4YdRUSkRVQkkmzPoeM89OZmphWczMi+3cKOIyLSIioSSTbr1WKqIs6/XKKtCBHJfCoSSbS99BhFC7fy2bMHMrhX57DjiIi0mIpEEt0ztxiAr0w5JeQkIiLJoSKRJDtKj/Hkom1cNW4g/Xt0DDuOiEhSqEgkyezXNgLwlcnDQ04iIpI8KhJJsKvsOEULtvHpwgEM6Nkp7DgiIkkTSJEwszwze8nMNsR+1nmFmZn1MLOnzGytma0xs4lB5Gup2a9tJOrOVybrWISItC5BbUncAbzi7iOAV2L9dbkbeMHdRwIFwJqA8jXb7kPHeWzBVj45tj8D87QVISKtS1BFYhrwcKz7YeDjtRuYWTfgAuB+AHc/4e6lAeVrttmvbSQSdb6qM5pEpBUyd0/9QsxK3b1HXP9Bd+9Zq81ZwG+Bd6neilgM3ObuR+qY3wxgBkB+fn5hUVFRwmWXl5fTpUuXpPwetR064dw+7yhn923DzWPaN2seqcyXDMrXPDNnziQSiTBr1qywoySUruuuhvK1TEP5pkyZstjdxzU4I3dPygt4GVhVx2saUFqr7cE6ph8HVAETYv13Az9saLmFhYVen7lz59Y7viX+58W1Pvhfn/MNuw81ex6pzJcMytc8kyZN8oKCgrBj1Ctd110N5WuZhvIBi7wR3+1Je56mu1+caJyZ7Tazfu6+08z6AXvqaFYClLj7O7H+p0h87CJ0RyqqePit97h0VD6n9OkadhwRkZQI6pjEs8D0WPd04JnaDdx9F7DNzE6LDbqI6l1PaenxBVspO1bJLbouQkRasaCKxE+AS8xsA3BJrB8zO9nM5sS1+xrwezNbAZwF/FdA+ZrkRFWU+/6+mQlD8/S8CBFp1ZK2u6k+7r6f6i2D2sN3AFfE9S+j+thEWntm2XZ2HTrOjz91ZthRRERSSldcN1E06vxm/iZG9u3K5FNPCjuOiEhKqUg00ctrdlO8p5wvTx6uZ1eLSKunItFEs1/byICeHfnImf3CjiIiknIqEk2wZOtBlmwt5aYPD6VNrladiLR++qZrgvtf30zXDm24atzAsKOIiARCRaKRtpce44VVu7hm/CA6tw/kpDARkdCpSDTSI29uAWD6uUNCzSEiEiQViUY4UlHFYwu2MnV0Xz2aVESyiopEIzy1uITDx6v44nlDw44iIhIoFYkGRKPOg29s5qyBPSgcrFtwiEh2CeR5EqlkZnuB9+pp0hvYF1Cc5lC+lknnfOmcDZSvpTI932B3b/C2ERlfJBpiZou8MQ/WCInytUw650vnbKB8LZUt+bS7SUREElKREBGRhLKhSPw27AANUL6WSed86ZwNlK+lsiJfqz8mISIizZcNWxIiItJMKhIiIpJQqygSZnaVma02s6iZJTzly8ymmtk6Mys2szvihueZ2UtmtiH2M6lXzTVm/mZ2mpkti3sdMrOZsXHfN7PtceOu+OBSUpct1m6Lma2MLX9RU6dPZT4zG2hmc81sTexzcFvcuJSsu0SfpbjxZmb/Gxu/wszGNnbagPJ9LpZrhZm9aWYFcePqfK8DzjfZzMri3rc7GzttANm+GZdrlZlFzCwvNi6IdfeAme0xs1UJxif3s+fuGf8CTgdOA+YB4xK0yQU2AsOAdsByYFRs3E+BO2LddwB3JTlfk+Yfy7qL6otdAL4P3J6iddeobMAWoHdLf7dU5AP6AWNj3V2B9XHvbdLXXX2fpbg2VwB/BQw4B3insdMGlO9coGes+/KafPW91wHnmww815xpU52tVvsrgVeDWnexZVwAjAVWJRif1M9eq9iScPc17r6ugWbjgWJ33+TuJ4AiYFps3DTg4Vj3w8DHkxyxqfO/CNjo7vVdSZ4sLf3dQ1937r7T3ZfEug8Da4D+Sc4Rr77PUo1pwCNe7W2gh5n1a+S0Kc/n7m+6+8FY79vAgCRnaFG+FE2bivlfAzyexOU3yN3nAwfqaZLUz16rKBKN1B/YFtdfwj++SPLdfSdUf+EAfZK87KbO/2o++MG7Nbbp+ECSd+k0NpsDfzOzxWY2oxnTpzofAGY2BPgQ8E7c4GSvu/o+Sw21acy0QeSLdyPV/3nWSPReB51vopktN7O/mtkZTZw21dkws07AVOCPcYNTve4aI6mfvYx5eo6ZvQz0rWPUd939mcbMoo5hSTv/t758TZxPO+BjwLfjBv8a+CHVeX8I/A/wxYCznefuO8ysD/CSma2N/UfTYklcd12o/oOd6e6HYoNbtO4SLaqOYbU/S4napPRz2MCyP9jQbArVReLDcYNT9l43Id8Sqne3lseOI/0ZGNHIaVOdrcaVwBvuHv9ffarXXWMk9bOXMUXC3S9u4SxKgPjnjg4AdsS6d5tZP3ffGdss25PMfGbWlPlfDixx991x836/28zuBZ4LOpu774j93GNmf6J603U+abLuzKwt1QXi9+7+dNy8W7TuEqjvs9RQm3aNmDaIfJjZGOA+4HJ3318zvJ73OrB8cUUed59jZveYWe/GTJvqbHE+sMUfwLprjKR+9rJpd9NCYISZDY39t3418Gxs3LPA9Fj3dKAxWyZN0ZT5f2AfZ+zLscYngDrPakhVNjPrbGZda7qBS+MyhL7uzMyA+4E17v7zWuNSse7q+yzF574+dqbJOUBZbHdZY6ZNeT4zGwQ8DVzn7uvjhtf3XgeZr2/sfcXMxlP9XbW/MdOmOlssU3dgEnGfx4DWXWMk97OXyqPwQb2o/uMvASqA3cCLseEnA3Pi2l1B9ZkvG6neTVUzvBfwCrAh9jMvyfnqnH8d+TpR/YfQvdb0vwNWAitib2q/ILNRfTbE8thrdbqtO6p3lXhs/SyLva5I5bqr67ME3ALcEus24Fex8SuJO+su0ecwyeutoXz3AQfj1teiht7rgPPdGlv+cqoPrJ8b1PprKFus/wagqNZ0Qa27x4GdQCXV33s3pvKzp9tyiIhIQtm0u0lERJpIRUJERBJSkRARkYRUJEREJCEVCRERSUhFQkREElKREBGRhFQkREQkIRUJkSSy6gdgVZjZ4Lhhd5vZRjPLDzObSHPoimuRJIrdb2ghsNTdbzaz24FvUX130A3hphNpuoy5C6xIJnB3N7PvAM+b2Uaqb3d+oQqEZCptSYikgJm9SfVtoq9097821F4kXemYhEiSmdmFQAHVd+Pc3UBzkbSmLQmRJDKzAuA14OvAR4Au7n5ZuKlEmk9FQiRJYmc0vQn8xt1/YGajqX6OxYXuPi/UcCLNpCIhkgRmlge8Acx39y/FDX8CGOTuE0MLJ9ICKhIiIpKQDlyLiEhCKhIiIpKQioSIiCSkIiEiIgmpSIiISEIqEiIikpCKhIiIJKQiISIiCf1/XQqlAfy0jOwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "def f(x):\n",
    "  return x**3\n",
    "\n",
    "xs = np.linspace(-1.05, 1.05, 500)\n",
    "ys = f(xs)\n",
    "plt.plot(xs, ys)\n",
    "show(axis=[-1.05, 1.05, -0.7, 0.7], title=r\"$f(x)=x^3$\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "NyDyBVnUFlUl"
   },
   "source": [
    "So in short, you can optimize a function by analytically working out the points at which the derivative is 0, and then investigating only these points. It's a beautifully elegant solution, but it requires a lot of work, and it's not always easy, or even possible. For neural networks, it's practically impossible."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "GqsVUknIGU3E"
   },
   "source": [
    "Another option to optimize a function is to perform **Gradient Descent** (we will consider minimizing the function, but the process would be almost identical if we tried to maximize a function instead): start at a random point $x_0$, then use the function's derivative to determine the slope at that point, and move a little bit in the downwards direction, then repeat the process until you reach a local minimum, and cross your fingers in the hope that this happens to be the global minimum.\n",
    "\n",
    "At each iteration, the step size is proportional to the slope, so the process naturally slows down as it approaches a local minimum. Each step is also proportional to the learning rate: a parameter of the Gradient Descent algorithm itself (since it is not a parameter of the function we are optimizing, it is called a **hyperparameter**).\n",
    "\n",
    "Here is an animation of this process on the function $f(x)=\\dfrac{1}{4}x^4 - x^2 + \\dfrac{1}{2}$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 670
    },
    "colab_type": "code",
    "id": "xyz-9xHeHPq2",
    "outputId": "5f6e6147-7b26-4a70-b390-08daee87788e"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<link rel=\"stylesheet\"\n",
       "href=\"https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/\n",
       "css/font-awesome.min.css\">\n",
       "<script language=\"javascript\">\n",
       "  function isInternetExplorer() {\n",
       "    ua = navigator.userAgent;\n",
       "    /* MSIE used to detect old browsers and Trident used to newer ones*/\n",
       "    return ua.indexOf(\"MSIE \") > -1 || ua.indexOf(\"Trident/\") > -1;\n",
       "  }\n",
       "\n",
       "  /* Define the Animation class */\n",
       "  function Animation(frames, img_id, slider_id, interval, loop_select_id){\n",
       "    this.img_id = img_id;\n",
       "    this.slider_id = slider_id;\n",
       "    this.loop_select_id = loop_select_id;\n",
       "    this.interval = interval;\n",
       "    this.current_frame = 0;\n",
       "    this.direction = 0;\n",
       "    this.timer = null;\n",
       "    this.frames = new Array(frames.length);\n",
       "\n",
       "    for (var i=0; i<frames.length; i++)\n",
       "    {\n",
       "     this.frames[i] = new Image();\n",
       "     this.frames[i].src = frames[i];\n",
       "    }\n",
       "    var slider = document.getElementById(this.slider_id);\n",
       "    slider.max = this.frames.length - 1;\n",
       "    if (isInternetExplorer()) {\n",
       "        // switch from oninput to onchange because IE <= 11 does not conform\n",
       "        // with W3C specification. It ignores oninput and onchange behaves\n",
       "        // like oninput. In contrast, Mircosoft Edge behaves correctly.\n",
       "        slider.setAttribute('onchange', slider.getAttribute('oninput'));\n",
       "        slider.setAttribute('oninput', null);\n",
       "    }\n",
       "    this.set_frame(this.current_frame);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.get_loop_state = function(){\n",
       "    var button_group = document[this.loop_select_id].state;\n",
       "    for (var i = 0; i < button_group.length; i++) {\n",
       "        var button = button_group[i];\n",
       "        if (button.checked) {\n",
       "            return button.value;\n",
       "        }\n",
       "    }\n",
       "    return undefined;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.set_frame = function(frame){\n",
       "    this.current_frame = frame;\n",
       "    document.getElementById(this.img_id).src =\n",
       "            this.frames[this.current_frame].src;\n",
       "    document.getElementById(this.slider_id).value = this.current_frame;\n",
       "  }\n",
       "\n",
       "  Animation.prototype.next_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.min(this.frames.length - 1, this.current_frame + 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.previous_frame = function()\n",
       "  {\n",
       "    this.set_frame(Math.max(0, this.current_frame - 1));\n",
       "  }\n",
       "\n",
       "  Animation.prototype.first_frame = function()\n",
       "  {\n",
       "    this.set_frame(0);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.last_frame = function()\n",
       "  {\n",
       "    this.set_frame(this.frames.length - 1);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.slower = function()\n",
       "  {\n",
       "    this.interval /= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.faster = function()\n",
       "  {\n",
       "    this.interval *= 0.7;\n",
       "    if(this.direction > 0){this.play_animation();}\n",
       "    else if(this.direction < 0){this.reverse_animation();}\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_forward = function()\n",
       "  {\n",
       "    this.current_frame += 1;\n",
       "    if(this.current_frame < this.frames.length){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.first_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.last_frame();\n",
       "        this.reverse_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.last_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.anim_step_reverse = function()\n",
       "  {\n",
       "    this.current_frame -= 1;\n",
       "    if(this.current_frame >= 0){\n",
       "      this.set_frame(this.current_frame);\n",
       "    }else{\n",
       "      var loop_state = this.get_loop_state();\n",
       "      if(loop_state == \"loop\"){\n",
       "        this.last_frame();\n",
       "      }else if(loop_state == \"reflect\"){\n",
       "        this.first_frame();\n",
       "        this.play_animation();\n",
       "      }else{\n",
       "        this.pause_animation();\n",
       "        this.first_frame();\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.pause_animation = function()\n",
       "  {\n",
       "    this.direction = 0;\n",
       "    if (this.timer){\n",
       "      clearInterval(this.timer);\n",
       "      this.timer = null;\n",
       "    }\n",
       "  }\n",
       "\n",
       "  Animation.prototype.play_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = 1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_forward();\n",
       "    }, this.interval);\n",
       "  }\n",
       "\n",
       "  Animation.prototype.reverse_animation = function()\n",
       "  {\n",
       "    this.pause_animation();\n",
       "    this.direction = -1;\n",
       "    var t = this;\n",
       "    if (!this.timer) this.timer = setInterval(function() {\n",
       "        t.anim_step_reverse();\n",
       "    }, this.interval);\n",
       "  }\n",
       "</script>\n",
       "\n",
       "<style>\n",
       ".animation {\n",
       "    display: inline-block;\n",
       "    text-align: center;\n",
       "}\n",
       "input[type=range].anim-slider {\n",
       "    width: 374px;\n",
       "    margin-left: auto;\n",
       "    margin-right: auto;\n",
       "}\n",
       ".anim-buttons {\n",
       "    margin: 8px 0px;\n",
       "}\n",
       ".anim-buttons button {\n",
       "    padding: 0;\n",
       "    width: 36px;\n",
       "}\n",
       ".anim-state label {\n",
       "    margin-right: 8px;\n",
       "}\n",
       ".anim-state input {\n",
       "    margin: 0;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "</style>\n",
       "\n",
       "<div class=\"animation\">\n",
       "  <img id=\"_anim_img1ec1960c5a024fac9a7ad4b17405fd20\">\n",
       "  <div class=\"anim-controls\">\n",
       "    <input id=\"_anim_slider1ec1960c5a024fac9a7ad4b17405fd20\" type=\"range\" class=\"anim-slider\"\n",
       "           name=\"points\" min=\"0\" max=\"1\" step=\"1\" value=\"0\"\n",
       "           oninput=\"anim1ec1960c5a024fac9a7ad4b17405fd20.set_frame(parseInt(this.value));\"></input>\n",
       "    <div class=\"anim-buttons\">\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.slower()\"><i class=\"fa fa-minus\"></i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.first_frame()\"><i class=\"fa fa-fast-backward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.previous_frame()\">\n",
       "          <i class=\"fa fa-step-backward\"></i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.reverse_animation()\">\n",
       "          <i class=\"fa fa-play fa-flip-horizontal\"></i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.pause_animation()\"><i class=\"fa fa-pause\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.play_animation()\"><i class=\"fa fa-play\"></i>\n",
       "          </button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.next_frame()\"><i class=\"fa fa-step-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.last_frame()\"><i class=\"fa fa-fast-forward\">\n",
       "          </i></button>\n",
       "      <button onclick=\"anim1ec1960c5a024fac9a7ad4b17405fd20.faster()\"><i class=\"fa fa-plus\"></i></button>\n",
       "    </div>\n",
       "    <form action=\"#n\" name=\"_anim_loop_select1ec1960c5a024fac9a7ad4b17405fd20\" class=\"anim-state\">\n",
       "      <input type=\"radio\" name=\"state\" value=\"once\" id=\"_anim_radio1_1ec1960c5a024fac9a7ad4b17405fd20\"\n",
       "             >\n",
       "      <label for=\"_anim_radio1_1ec1960c5a024fac9a7ad4b17405fd20\">Once</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"loop\" id=\"_anim_radio2_1ec1960c5a024fac9a7ad4b17405fd20\"\n",
       "             checked>\n",
       "      <label for=\"_anim_radio2_1ec1960c5a024fac9a7ad4b17405fd20\">Loop</label>\n",
       "      <input type=\"radio\" name=\"state\" value=\"reflect\" id=\"_anim_radio3_1ec1960c5a024fac9a7ad4b17405fd20\"\n",
       "             >\n",
       "      <label for=\"_anim_radio3_1ec1960c5a024fac9a7ad4b17405fd20\">Reflect</label>\n",
       "    </form>\n",
       "  </div>\n",
       "</div>\n",
       "\n",
       "\n",
       "<script language=\"javascript\">\n",
       "  /* Instantiate the Animation class. */\n",
       "  /* The IDs given should match those used in the template above. */\n",
       "  (function() {\n",
       "    var img_id = \"_anim_img1ec1960c5a024fac9a7ad4b17405fd20\";\n",
       "    var slider_id = \"_anim_slider1ec1960c5a024fac9a7ad4b17405fd20\";\n",
       "    var loop_select_id = \"_anim_loop_select1ec1960c5a024fac9a7ad4b17405fd20\";\n",
       "    var frames = new Array(1);\n",
       "    \n",
       "  frames[0] = \"\\\n",
       "AAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0\\\n",
       "dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeVxU9f7H8dcM+yICsgguKOCOoiGI\\\n",
       "aErllpZpaWmLW4Zr2m3zdlusrprdsjK1DDVtc0mzzLUs19zIDfd9B3cBAQGB+f7+mOQXgTLIDHMY\\\n",
       "Ps/Hw0fNzJlz3meYeTOc5Xt0SimFEEIIzdFbO4AQQojiSUELIYRGSUELIYRGSUELIYRGSUELIYRG\\\n",
       "SUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUEL\\\n",
       "IYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRG\\\n",
       "SUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUEL\\\n",
       "IYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRGSUELIYRG\\\n",
       "SUELIYRGSUELIYRGSUFbwIYNG+jevTs1atRAp9MxZ84ca0fSNHm9hCieFLQFZGRkEBYWxuTJk3Fx\\\n",
       "cbF2HM2T10uI4umUUsraIWyZu7s7U6dOZcCAAdaOUiHI6yXE/5Nv0BWAwWAgMjKSXr16lfuyz549\\\n",
       "S2xsLI0bNyY8PJzFixeXewYhKit7awcQJfv8888JCQkhLy+v3Jdtb2/PJ598QvPmzbl06RIRERF0\\\n",
       "6dIFV1fXcs8iRGVTIb9Bz5gxg+DgYOzt7RkyZAgpKSn4+/tz/Phxk+fRq1cvPvroIwumNI9Lly6x\\\n",
       "ePFi4uLirLL8gIAAmjdvDoCfnx9eXl5cuXLFKlnK00MPPXRXm1liY2MZOXKk+QOJSqnCFfShQ4cY\\\n",
       "NmwYkyZN4uzZs0yaNIkJEybQtWtXQkJCTJ7P2LFjGTduHGlpaRZMW3avvPIK//3vf9Hrrf+j2r59\\\n",
       "O7m5udSqVcvaUTShPMvYForfnOtgC6+HKaz/qS+ln3/+mbCwMHr27ElAQAB6vZ6ZM2fy7LPPlmo+\\\n",
       "TZs2JTg4mG+//dZCSctuw4YN6HQ6YmJirB2Fq1ev0q9fP2bNmoVOpytx+gEDBvD2229bPpgQtkyZ\\\n",
       "SY0aNdSkSZMK3bdnzx7l5OSk9u/fb5Zl1KtXTwEF/3r06KEWLlyovL29lcFgKDTt999/rxwdHdWp\\\n",
       "U6cK7hs1apQKDg5WFy5cUEop9c4776g2bdqYJdvfpaenq127dqldu3YpFxcX9c4776hdu3ap06dP\\\n",
       "lyrje++9pwIDA1VQUJDy9/dXrq6uatCgQWbNasrrlJ2dre6991719ddfmzzf/v37q7Fjx5o0ramv\\\n",
       "V3FWrlyp2rZtqzw9PZWXl5fq1KmTOnDgQMHj7du3V8OGDVOvvfaaqlatmvL19VUvvfSSys/PL5gm\\\n",
       "MzNT9e/fX7m5uSk/Pz81fvx41a1bN9W/f/87rt/f34uAOnnypEnLMxgM6v3331fBwcHK2dlZhYWF\\\n",
       "qW+++abUyzLX+mdkZKhnnnmmYP0nTJhQZP1NyXynZd1pHUr7My3NvEx5f5eVJZdhtoLu1auX6tOn\\\n",
       "T6H77r//fjVixIgi044fP165ubnd8d+GDRuKPO/ixYuqfv36aty4cer8+fMqLS1NjRo1SnXs2LHI\\\n",
       "tAaDQUVERKjBgwcrpZT64IMPlK+vrzpy5EjBNCtXrlQODg7qxo0bZsuolFJr164t8gYCinzgTcn4\\\n",
       "93k+9thjxS6vLErKYDAYVJ8+fUwu21tKU9Cmvl7FWbRokVq0aJE6cuSISkxMVL1791YhISEqJydH\\\n",
       "KWUsDQ8PD/Xmm2+qw4cPqwULFig7Ozs1d+7cgnkMGzZMBQYGqlWrVqm9e/eqXr16qSpVqtxx+amp\\\n",
       "qap169Zq4MCB6vz58+r8+fMqLy/PpOX95z//UfXr11crV65UJ06cUN99951ydXVVy5YtK9WyzLX+\\\n",
       "Q4YMUbVr11a//vqr2rdvn3riiSeUh4dHofU3JfOdlnWndSjtz7Q08yrNZ+xuP/OlWUZpma2gJ02a\\\n",
       "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\\\n",
       "8XWjYYAH/lWccXW0IycvnwvXczhxOYOjFzO4mW/AzdGOni1q0jeqFs1qynHNQttiQnyICfFh99lU\\\n",
       "Fvx5lmV7klm8Kwk7vY7GAR7UruZKYFVnHO315OQaOH89m4PJ1zlxJROAIA89k/uE061pAPZa++tQ\\\n",
       "r70henWqDOcvd+jQgQsXiu4kGz9+PP379yc1NbXgPi8vr2K3QycnJxMYGMilS5fo2LEjU6ZMoV27\\\n",
       "dkWmi4+PJz4+HoBz584xf/78YjNlZGTg7l5O27KKoZTi2KVMDmc6ciLVwLkMA9dzFDn54KAHDycd\\\n",
       "gW56albRE+ZjRz0vPQ4WuNK2tV8HrWR44YUXyM/PZ8qUKVbNoYXXwhIZbuYrjqYYOHQtnxNp+VzJ\\\n",
       "UlzLVhgU2OnAy1lHgJueel56WvjZ48ENTb8OL7/8srY2tSoLqV+/vkpOTlZKKZWcnKzq169f4nPG\\\n",
       "jh2rPvjggxKni4iIuO1ja9euNTmjpRSXwWAwWD1DedNChvbt26vw8HBrx9DEayEZSs5wp26xBov9\\\n",
       "jdG9e3e++uorAL766iseeeSRItNkZmaSnp5e8P+//vorYWFhlopkVTqd+b8lCyFsm8UK+t///jer\\\n",
       "V6+mXr16rF69mn//+9+AcZNG165dAeN26rZt2xIeHk5UVBTdunWjS5culookhBAVisV2ElarVo3f\\\n",
       "f/+9yP2BgYGsWLECgODgYBITEy0VQQghKjSN7UYVQghxixS0EEJolBS0EEJolBS0EEJolBS0EEJo\\\n",
       "lBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0\\\n",
       "EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJolBS0EEJo\\\n",
       "lBS0EEJolBS0EEJolBS0EEJolMUKeuHChTRp0gS9Xs/27dtvO92qVato0KABoaGhTJw40VJxhBCi\\\n",
       "wrFYQYeFhbF48WLatWt322ny8/MZMWIEK1eu5MCBA8ybN48DBw5YKpIQQlQo9paacaNGjUqcJiEh\\\n",
       "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\\\n",
       "yXbIyspC37598dFHH8HV1bXAc1poi5JYRYH+8ccfDT6/ePFirF+/Hj/99FORDVy/fn2cOXMm/+u0\\\n",
       "tDR4lnLV75IyGOPePt3d3REVFYXk5ORSFabyZjB3O9StWxfp6enw8PBAeno63IuZ+rW87fAgY47L\\\n",
       "FMde3gz3F4hu3bphxIgRuHz5ctmn2DVTTnOzVDvk5OSgb9++GDBgAPr06VPoeS20RUmsvosjMTER\\\n",
       "7777LtauXYuqVasWuU2bNm1w9OhRnDx5EtnZ2YiLi0PPnj0tmvPGjRvIzMzM//emTZuKvcptLuZu\\\n",
       "h549e2Lx4sUA5C/Nos7qzdEOxhxXz5498fXXX0MIgV27dqF69er53TGmYEyG8+fP55+1JScnIy8v\\\n",
       "D7Vr1zZZBmOYux2MYYl2EEJg8ODB8PX1xbhx44rcRgttUSIllyZNqHHjxqJ+/fpCr9cLvV4vhg0b\\\n",
       "JoQQ4uzZsyIyMjJ/u4SEBNG0aVPh4+MjZsyYYdIMq1atEl5eXsLR0VG4u7uLiIiIQhmOHz8uAgMD\\\n",
       "RWBgoGjZsqWSDEKYtx0uX74sOnbsKJo0aSI6duworly5UiiDudqhqOP67LPPxGeffSaEECIvL0+M\\\n",
       "GDFC+Pj4CH9/f4OjbcyVISYmRrRs2VIEBgaKtm3biu3bt5s8wzPPPCPq1asn7O3thZeXl/jiiy8s\\\n",
       "3g4lZbBEO2zbtk0AEAEBAfm1ISEhweJtUV68k5CISKOsvouDiMhWsUATEWkUCzQRkUaxQBMRaRQL\\\n",
       "NBGRRrFAExFpFAs0EZFGsUATEWkUCzTZnBUrVsDJyQmnTp3Kf2zMmDFo3LgxLly4oDAZUenwTkKy\\\n",
       "OUIItGnTBq1atcKCBQvwwQcf4L333sP27dvRtGlT1fGIjGYVs9kRlYZOp0N0dDS6d++Oxo0bY+bM\\\n",
       "mdiyZQuLM1kdnkGTzXrkkUeQnJyMdevWFbmQA5HWsQ+abNKWLVuwf/9+CCFQt25d1XGIyoRn0GRz\\\n",
       "9u/fj/DwcMyZMwcJCQnIysrCxo0bVcciKjUWaLIpp06dwiOPPIJhw4Zh2rRpSElJQWBgILZs2YIO\\\n",
       "HTqojkdUKizQZDOuXr2K9u3bIywsDPPnz89/vH///jh9+jR27typMB1R6bFAExFpFC8SEhFpFAs0\\\n",
       "EZFGsUATEWkUCzQRkUaxQBMRaRQLNBGRRrFAExFpFAs0EZFGsUATEWkUCzQRkUaxQBMRaRQLNBGR\\\n",
       "RrFAExFpFAs0EZFGsUATEWkUCzQRkUaxQBMRaRQLNBGRRrFAExFpFAs0EZFGsUATEWkUCzQRkUax\\\n",
       "QBMRaRQLNBGRRrFAExFpFAs0EZFGsUATEWkUCzQRkUaxQBMRaRQLNBGRRrFAExFpFAs0EZFGsUAT\\\n",
       "EWkUCzQRkUaxQBMRaRQLNBGRRrFAExFpFAs0EZFGsUATEWnU/wGgA4L5O+ZOmAAAAABJRU5ErkJg\\\n",
       "gg==\\\n",
       "\"\n",
       "\n",
       "\n",
       "    /* set a timeout to make sure all the above elements are created before\n",
       "       the object is initialized. */\n",
       "    setTimeout(function() {\n",
       "        anim1ec1960c5a024fac9a7ad4b17405fd20 = new Animation(frames, img_id, slider_id, 20.0,\n",
       "                                 loop_select_id);\n",
       "    }, 0);\n",
       "  })()\n",
       "</script>\n"
      ],
      "text/plain": [
       "<matplotlib.animation.FuncAnimation at 0x7ff84006e310>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#@title\n",
    "def animate_gradient_descent(f, fp, f_str, x_0):\n",
    "    learning_rate = 0.01\n",
    "    n_frames = 200\n",
    "    x_min, x_max = -1000, 1000\n",
    "\n",
    "    fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(5, 8), sharex=True)\n",
    "\n",
    "    # plot f\n",
    "    xs = np.linspace(-2.1, 2.1, 500)\n",
    "    ys = f(xs)\n",
    "    ax1.plot(xs, ys)\n",
    "\n",
    "    # plot tangent\n",
    "    line_tangent, = ax1.plot([x_min, x_max], [0, 0])\n",
    "\n",
    "    # plot f'\n",
    "    xs = np.linspace(-2.1, 2.1, 500)\n",
    "    ys = fp(xs)\n",
    "    ax2.plot(xs, ys, \"r-\")\n",
    "\n",
    "    # plot points A\n",
    "    point_A1, = ax1.plot(0, 0, \"bo\")\n",
    "    point_A2, = ax2.plot(0, 0, \"bo\")\n",
    "\n",
    "    show([-2.1, 2.1, -1.4, 1.4], ax=ax1, ylabel=\"$f(x)$\",\n",
    "        title=r\"$y=f(x)=\" + f_str + \"$ and the tangent at $x=x_\\mathrm{A}$\")\n",
    "    show([-2.1, 2.1, -4.2, 4.2], ax=ax2, ylabel=\"$f'(x)$\",\n",
    "        title=r\"$y=f'(x)$ and the slope of the tangent at $x=x_\\mathrm{A}$\")\n",
    "\n",
    "    xs = []\n",
    "    x = x_0\n",
    "    for index in range(n_frames):\n",
    "      xs.append(x)\n",
    "      slope = fp(x)\n",
    "      x = x - slope * learning_rate\n",
    "\n",
    "    def update_graph(i):\n",
    "        x = xs[i]\n",
    "        f_x = f(x)\n",
    "        df_dx = fp(x)\n",
    "        offset = f_x - df_dx * x\n",
    "        line_tangent.set_data([x_min, x_max],\n",
    "                              [df_dx * x_min + offset, df_dx * x_max + offset])\n",
    "        point_A1.set_data(x, f_x)\n",
    "        point_A2.set_data(x, df_dx)\n",
    "        return line_tangent, point_A1, point_A2\n",
    "\n",
    "    anim = animation.FuncAnimation(fig, update_graph,\n",
    "                                  init_func=lambda: update_graph(0),\n",
    "                                  frames=n_frames,\n",
    "                                  interval=20,\n",
    "                                  blit=True)\n",
    "    plt.close()\n",
    "    return anim\n",
    "\n",
    "def f(x):\n",
    "  return 1/4 * x**4 - x**2 + 1/2\n",
    "\n",
    "def fp(x):\n",
    "  return x**3 - 2*x\n",
    "\n",
    "animate_gradient_descent(f, fp, r\"\\dfrac{1}{4}x^4 - x^2 + \\dfrac{1}{2}\",\n",
    "                         x_0=1/4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "7L5F3UXga42Y"
   },
   "source": [
    "In this example, we started with $x_0 = \\dfrac{1}{4}$, so Gradient Descent \"rolled down\" towards the minimum value at $x = \\sqrt2$. But if we had started at $x_0 = -\\dfrac{1}{4}$, it would have gone towards $-\\sqrt2$. This illustrates the fact that the initial value is important: depending on $x_0$, the algorithm may converge to a global minimum (hurray!) or to a poor local minimum (boo!) or stay stuck on a plateau, such as a horizontal inflection point (boo!)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "48eMS_1gJYai"
   },
   "source": [
    "There are many variants of the Gradient Descent algorithm, discussed in Chapter 11 of the book. These are the ones we care about in Deep Learning. They all rely on the derivative of the cost function with regards to the model parameters (we will discuss functions with multiple parameters later in this notebook)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vEb15WdbYYiB"
   },
   "source": [
    "# Higher order derivatives\n",
    "\n",
    "What happens if we try to differentiate the function $f'(x)$? Well, we get the so-called second order derivative, noted $f''(x)$, or $\\dfrac{\\mathrm{d}^2f}{\\mathrm{d}x^2}$. If we repeat the process by differentiating $f''(x)$, we get the third-order derivative $f'''(x)$, or $\\dfrac{\\mathrm{d}^3f}{\\mathrm{d}x^3}$. And we could go on to get higher order derivatives.\n",
    "\n",
    "What's the intuition behind second order derivatives? Well, since the (first order) derivative represents the instantaneous rate of change of $f$ at each point, the second order derivative represents the instantaneous rate of change of the rate of change itself, in other words, you can think of it as the **acceleration** of the curve: if $f''(x) < 0$, then the curve is accelerating \"downwards\", if $f''(x) > 0$ then the curve is accelerating \"upwards\", and if $f''(x) = 0$, then the curve is locally a straight line. Note that a curve could be going upwards (i.e., $f'(x)>0$) but also be accelerating downwards (i.e., $f''(x) < 0$): for example, imagine the path of a stone thrown upwards, as it is being slowed down by gravity (which constantly accelerates the stone downwards).\n",
    "\n",
    "Deep Learning generally only uses first order derivatives, but you will sometimes run into some optimization algorithms or cost functions based on second order derivatives."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "TwrWcqj7Ybyk"
   },
   "source": [
    "# Partial derivatives\n",
    "\n",
    "Up to now, we have only considered functions with a single variable $x$. What happens when there are multiple variables? For example, let's start with a simple function with 2 variables: $f(x,y)=\\sin(xy)$. If we plot this function, using $z=f(x,y)$, we get the following 3D graph. I also plotted some point $\\mathrm{A}$ on the surface, along with two lines I will describe shortly."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 303
    },
    "colab_type": "code",
    "id": "eOzDBgjndchn",
    "outputId": "e73007e2-89e1-4904-a577-5ada89669ae9"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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D2mHKeF1rrzySqZNm8ajjz7K22+/zbRp03y9JIlRzJw5cygpKeHw4cOoVCqeeeYZXy9JYpQgCaaE19m1axeHDh1CEASpDCvhda688krnDOkFF1xAQ0ODj1ckMVqQBFPCqxw6dIibbrqJdevWccMNN/DQQw/5ekke5bbbbmPmzJmUlZWRlpbGK6+84uslSbjw6quvMm/ePF8vQ2KUII2VSHiN2tpaLrzwQu6++24ef/xxSkpKmDhxIrt27XJ6l0pInAmDyapcuXIl+/bt45///KdkuycxVKQ5TInho6uri1mzZnHxxRfz8ssvO39+6623UldXx969e324OgnoMz5ftGgRLS0tyOVy7rrrLpYsWeLrZXmETZs2sXHjRnbu3EloaKivlyMx8pAEU0JC4geam5tpbm5m8uTJ6HQ6pkyZwgcffDDiQ7s//fRTli5dyu7du0lISPD1ciRGJpJgSkhIDMz111/Pr371K+bMmePrpZwVeXl5mM1m4uLigL7Gn40bN/p4VRIjDEkwJSQk+qempoaLL76YkpISIiMjfb0cCQlfI1njSUhInIxer2fBggWsXbtWEksJiVMgCaaExDmM1WplwYIFLFy4kJtuusnXy5GQ8GukkqyExDmKIAjcfvvtxMbGsnbtWl8vR0LCn5DOMCUkJH5gz549zJ49m/POO8+ZT7lq1SquvvpqH69MQsLnnJFgSkhISEhISCCdYUpISEhISAwKSTAlJCQkJCQGgSSYEhISEhISg0ASTAkJCQkJiUEgCaaEhISEhMQgkARTQkJCQkJiEPx/fs/DmusUG8gAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "def plot_3d(f, title):\n",
    "    fig = plt.figure(figsize=(8, 5))\n",
    "    ax = fig.add_subplot(111, projection='3d')\n",
    "\n",
    "    xs = np.linspace(-2.1, 2.1, 100)\n",
    "    ys = np.linspace(-2.1, 2.1, 100)\n",
    "    xs, ys = np.meshgrid(xs, ys)\n",
    "    zs = f(xs, ys)\n",
    "\n",
    "    surface = ax.plot_surface(xs, ys, zs,\n",
    "                              cmap=mpl.cm.coolwarm,\n",
    "                              linewidth=0.3, edgecolor='k')\n",
    "\n",
    "    ax.set_xlabel(\"$x$\", fontsize=14)\n",
    "    ax.set_ylabel(\"$y$\", fontsize=14)\n",
    "    ax.set_zlabel(\"$z$\", fontsize=14)\n",
    "    ax.set_title(title, fontsize=14)\n",
    "    return ax\n",
    "\n",
    "def plot_tangents(ax, x_A, y_A, f, df_dx, df_dy):\n",
    "    ax.plot3D([x_A], [y_A], f(x_A, y_A), \"bo\", zorder=10)\n",
    "    x_min, x_max = -2.1, 2.1\n",
    "    slope_x = df_dx(x_A, y_A)\n",
    "    offset_x = f(x_A, y_A) - slope_x * x_A\n",
    "    ax.plot3D([x_min, x_max], [y_A, y_A],\n",
    "              [slope_x * x_min + offset_x, slope_x * x_max + offset_x], \"b-.\",\n",
    "              zorder=5)\n",
    "    y_min, y_max = -2.1, 2.1\n",
    "    slope_y = df_dy(x_A, y_A)\n",
    "    offset_y = f(x_A, y_A) - slope_y * y_A\n",
    "    ax.plot3D([x_A, x_A], [y_min, y_max],\n",
    "              [slope_y * y_min + offset_y, slope_y * y_max + offset_y], \"r-\",\n",
    "              zorder=5)\n",
    "\n",
    "def f(x, y):\n",
    "    return np.sin(x * y)\n",
    "\n",
    "def df_dx(x, y):\n",
    "    return y * np.cos(x * y)\n",
    "\n",
    "def df_dy(x, y):\n",
    "    return x * np.cos(x * y)\n",
    "\n",
    "ax = plot_3d(f, r\"$z = f(x, y) = \\sin(xy)$\")\n",
    "plot_tangents(ax, 0.1, -1, f, df_dx, df_dy)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "_gEEyyJLdFzM"
   },
   "source": [
    "If you were to stand on this surface at point $\\mathrm{A}$ and walk along the $x$ axis towards the right (increasing $x$), your path would go down quite steeply (along the dashed blue line). The slope along this axis would be negative. However, if you were to walk along the $y$ axis, towards the back (increasing $y$), then your path would almost be flat (along the solid red line), at least locally: the slope along that axis, at point $\\mathrm{A}$, would be very slightly positive.\n",
    "\n",
    "As you can see, a single number is no longer sufficient to describe the slope of the function at a given point. We need one slope for the $x$ axis, and one slope for the $y$ axis. One slope for each variable. To find the slope along the $x$ axis, called the **partial derivative of $f$ with regards to $x$**, and noted $\\dfrac{\\partial f}{\\partial x}$ (with curly $\\partial$), we can differentiate $f(x,y)$ with regards to $x$ while treating all other variables (in this case just $y$) as constants:\n",
    "\n",
    "$ \\dfrac{\\partial f}{\\partial x} = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon, y) - f(x,y)}{\\epsilon}$\n",
    "\n",
    "If you use the derivative rules listed earlier (in this example you would just need the product rule and the chain rule), making sure to treat $y$ as a constant, then you will find:\n",
    "\n",
    "$ \\dfrac{\\partial f}{\\partial x} = y\\cos(xy)$\n",
    "\n",
    "Similarly, the partial derivative of $f$ with regards to $y$ is defined as:\n",
    "\n",
    "$ \\dfrac{\\partial f}{\\partial y} = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x, y+\\epsilon) - f(x,y)}{\\epsilon}$\n",
    "\n",
    "All variables except for $y$ are treated like constants (just $x$ in this example). Using the derivative rules, we get:\n",
    "\n",
    "$ \\dfrac{\\partial f}{\\partial y} = x\\cos(xy)$\n",
    "\n",
    "We now have equations to compute the slope along the $x$ axis and along the $y$ axis. But what about the other directions? If you were standing on the surface at point $\\mathrm{A}$, you could decide to walk in any direction you choose, not just along the $x$ or $y$ axes. What would the slope be then? Shouldn't we compute the slope along every possible direction?\n",
    "\n",
    "Well, it can be shown that if all the partial derivatives are defined and continuous in a neighborhood around point $\\mathrm{A}$, then the function $f$ is **totally differentiable** at that point, meaning that it can be locally approximated by a plane $P_\\mathrm{A}$ (the tangent plane to the surface at point $\\mathrm{A}$). In this case, having just the partial derivatives along each axis ($x$ and $y$ in our case) is sufficient to perfectly characterize that plane. Its equation is:\n",
    "\n",
    "$z = f(x_\\mathrm{A},y_\\mathrm{A}) + (x - x_\\mathrm{A})\\dfrac{\\partial f}{\\partial x}(x_\\mathrm{A},y_\\mathrm{A}) + (y - y_\\mathrm{A})\\dfrac{\\partial f}{\\partial y}(x_\\mathrm{A},y_\\mathrm{A})$\n",
    "\n",
    "In Deep Learning, we will generally be dealing with well-behaved functions that are totally differentiable at any point where all the partial derivatives are defined, but you should know that some functions are not that nice. For example, consider the function:\n",
    "\n",
    "$h(x,y)=\\begin{cases}0 \\text { if } x=0 \\text{ or } y=0\\\\1 \\text { otherwise}\\end{cases}$\n",
    "\n",
    "At the origin (i.e., at $(x,y)=(0,0)$), the partial derivatives of the function $h$ with respect to $x$ and $y$ are both perfectly defined: they are equal to 0. Yet the function can clearly not be approximated by a plane at that point. It is not totally differentiable at that point (but it is totally differentiable at any point off the axes).\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "VS0xnTE_Ym4c"
   },
   "source": [
    "# Gradients\n",
    "\n",
    "So far we have considered only functions with a single variable $x$, or with 2 variables, $x$ and $y$, but the previous paragraph also applies to functions with more variables. So let's consider a function $f$ with $n$ variables: $f(x_1, x_2, \\dots, x_n)$. For convenience, we will define a vector $\\mathbf{x}$ whose components are these variables:\n",
    "\n",
    "$\\mathbf{x}=\\begin{pmatrix}\n",
    "x_1\\\\\n",
    "x_2\\\\\n",
    "\\vdots\\\\\n",
    "x_n\n",
    "\\end{pmatrix}$ \n",
    "\n",
    "Now $f(\\mathbf{x})$ is easier to write than $f(x_1, x_2, \\dots, x_n)$.\n",
    "\n",
    "The gradient of the function $f(\\mathbf{x})$ at some point $\\mathbf{x}_\\mathrm{A}$ is the vector whose components are all the partial derivatives of the function at that point. It is noted $\\nabla f(\\mathbf{x}_\\mathrm{A})$, or sometimes $\\nabla_{\\mathbf{x}_\\mathrm{A}}f$:\n",
    "\n",
    "$\\nabla f(\\mathbf{x}_\\mathrm{A}) = \\begin{pmatrix}\n",
    "\\dfrac{\\partial f}{\\partial x_1}(\\mathbf{x}_\\mathrm{A})\\\\\n",
    "\\dfrac{\\partial f}{\\partial x_2}(\\mathbf{x}_\\mathrm{A})\\\\\n",
    "\\vdots\\\\\\\n",
    "\\dfrac{\\partial f}{\\partial x_n}(\\mathbf{x}_\\mathrm{A})\\\\\n",
    "\\end{pmatrix}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "u2YNS1ZqsKeg"
   },
   "source": [
    "Assuming the function is totally differentiable at the point $\\mathbf{x}_\\mathbf{A}$, then the surface it describes can be approximated by a plane at that point (as discussed in the previous section), and the gradient vector is the one that points towards the steepest slope on that plane."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "GF8nLfs08iuR"
   },
   "source": [
    "## Gradient Descent, revisited\n",
    "\n",
    "In Deep Learning, the Gradient Descent algorithm we discussed earlier is based on gradients instead of derivatives (hence its name). It works in much the same way, but using vectors instead of scalars: simply start with a random vector $\\mathbf{x}_0$, then compute the gradient of $f$ at that point, and perform a small step in the opposite direction, then repeat until convergence. More precisely, at each step $t$, compute $\\mathbf{x}_t = \\mathbf{x}_{t-1} - \\eta \\nabla f(\\mathbf{x}_{t-1})$. The constant $\\eta$ is the learning rate, typically a small value such as $10^{-3}$. In practice, we generally use more efficient variants of this algorithm, but the general idea remains the same.\n",
    "\n",
    "In Deep Learning, the letter $\\mathbf{x}$ is generally used to represent the input data. When you _use_ a neural network to make predictions, you feed the neural network the inputs $\\mathbf{x}$, and you get back a prediction $\\hat{y} = f(\\mathbf{x})$. The function $f$ treats the model parameters as constants. We can use more explicit notation by writing $\\hat{y} = f_\\mathbf{w}(\\mathbf{x})$, where $\\mathbf{w}$ represents the model parameters and indicates that the function relies on them, but treats them as constants.\n",
    "\n",
    "However, when _training_ a neural network, we do quite the opposite: all the training examples are grouped in a matrix $\\mathbf{X}$, all the labels are grouped in a vector $\\mathbf{y}$, and both $\\mathbf{X}$ and $\\mathbf{y}$ are treated as constants, while $\\mathbf{w}$ is treated as variable: specifically, we try to minimize the cost function $\\mathcal L_{\\mathbf{X}, \\mathbf{y}}(\\mathbf{w}) = g(f_{\\mathbf{X}}(\\mathbf{w}), \\mathbf{y})$, where $g$ is a function that measures the \"discrepancy\" between the predictions $f_{\\mathbf{X}}(\\mathbf{w})$ and the labels $\\mathbf{y}$, where $f_{\\mathbf{X}}(\\mathbf{w})$ represents the vector containing the predictions for each training example. Minimizing the loss function is usually performed using Gradient Descent (or a variant of GD): we start with random model parameters $\\mathbf{w}_0$, then we compute $\\nabla \\mathcal L(\\mathbf{w}_0)$ and we use this gradient vector to perform a Gradient Descent step, then we repeat the process until convergence. It is crucial to understand that the gradient of the loss function is with regards to the model parameters $\\mathbf{w}$ (_not_ the inputs $\\mathbf{x}$)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Ldp74ZLCZjm5"
   },
   "source": [
    "# Jacobians\n",
    "\n",
    "Until now we have only considered functions that output a scalar, but it is possible to output vectors instead. For example, a classification neural network typically outputs one probability for each class, so if there are $m$ classes, the neural network will output an $d$-dimensional vector for each input.\n",
    "\n",
    "In Deep Learning we generally only need to differentiate the loss function, which almost always outputs a single scalar number. But suppose for a second that you want to differentiate a function $\\mathbf{f}(\\mathbf{x})$ which outputs $d$-dimensional vectors. The good news is that you can treat each _output_ dimension independently of the others. This will give you a partial derivative for each input dimension and each output dimension. If you put them all in a single matrix, with one column per input dimension and one row per output dimension, you get the so-called **Jacobian matrix**.\n",
    "\n",
    "$\n",
    "\\mathbf{J}_\\mathbf{f}(\\mathbf{x}_\\mathbf{A}) = \\begin{pmatrix}\n",
    "\\dfrac{\\partial f_1}{\\partial x_1}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial f_1}{\\partial x_2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial f_1}{\\partial x_n}(\\mathbf{x}_\\mathbf{A})\\\\\n",
    "\\dfrac{\\partial f_2}{\\partial x_1}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial f_2}{\\partial x_2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial f_2}{\\partial x_n}(\\mathbf{x}_\\mathbf{A})\\\\\n",
    "\\vdots && \\vdots && \\ddots && \\vdots \\\\\n",
    "\\dfrac{\\partial f_m}{\\partial x_1}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial f_m}{\\partial x_2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial f_m}{\\partial x_n}(\\mathbf{x}_\\mathbf{A})\n",
    "\\end{pmatrix}\n",
    "$\n",
    "\n",
    "The partial derivatives themselves are often called the **Jacobians**. It's just the first order partial derivatives of the function $\\mathbf{f}$."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "fAx8-JfDgtVY"
   },
   "source": [
    "# Hessians\n",
    "\n",
    "Let's come back to a function $f(\\mathbf{x})$ which takes an $n$-dimensional vector as input and outputs a scalar. If you determine the equation of the partial derivative of $f$ with regards to $x_i$ (the $i^\\text{th}$ component of $\\mathbf{x}$), you will get a new function of $\\mathbf{x}$: $\\dfrac{\\partial f}{\\partial x_i}$. You can then compute the partial derivative of this function with regards to $x_j$ (the $j^\\text{th}$ component of $\\mathbf{x}$). The result is a partial derivative of a partial derivative: in other words, it is a **second order partial derivatives**, also called a **Hessian**. It is noted $\\mathbf{x}$: $\\dfrac{\\partial^2 f}{\\partial x_jx_i}$. If $i\\neq j$ then it is called a **mixed second order partial derivative**.\n",
    "Or else, if $j=i$, it is noted $\\dfrac{\\partial^2 f}{\\partial {x_i}^2}$\n",
    "\n",
    "Let's look at an example: $f(x, y)=\\sin(xy)$. As we showed earlier, the first order partial derivatives of $f$ are: $\\dfrac{\\partial f}{\\partial x}=y\\cos(xy)$ and $\\dfrac{\\partial f}{\\partial y}=x\\cos(xy)$. So we can now compute all the Hessians (using the derivative rules we discussed earlier):\n",
    "\n",
    "* $\\dfrac{\\partial^2 f}{\\partial x^2} = \\dfrac{\\partial f}{\\partial x}\\left[y\\cos(xy)\\right] = -y^2\\sin(xy)$\n",
    "* $\\dfrac{\\partial^2 f}{\\partial y\\,\\partial x} = \\dfrac{\\partial f}{\\partial y}\\left[y\\cos(xy)\\right] = \\cos(xy) - xy\\sin(xy)$\n",
    "* $\\dfrac{\\partial^2 f}{\\partial x\\,\\partial y} = \\dfrac{\\partial f}{\\partial x}\\left[x\\cos(xy)\\right] = \\cos(xy) - xy\\sin(xy)$\n",
    "* $\\dfrac{\\partial^2 f}{\\partial y^2} = \\dfrac{\\partial f}{\\partial y}\\left[x\\cos(xy)\\right] = -x^2\\sin(xy)$\n",
    "\n",
    "Note that $\\dfrac{\\partial^2 f}{\\partial x\\,\\partial y} = \\dfrac{\\partial^2 f}{\\partial y\\,\\partial x}$. This is the case whenever all the partial derivatives are defined and continuous in a neighborhood around the point at which we differentiate.\n",
    "\n",
    "The matrix containing all the Hessians is called the **Hessian matrix**:\n",
    "\n",
    "$\n",
    "\\mathbf{H}_f(\\mathbf{x}_\\mathbf{A}) = \\begin{pmatrix}\n",
    "\\dfrac{\\partial^2 f}{\\partial {x_1}^2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial^2 f}{\\partial x_1\\, \\partial x_2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial^2 f}{\\partial x_1\\, \\partial x_n}(\\mathbf{x}_\\mathbf{A})\\\\\n",
    "\\dfrac{\\partial^2 f}{\\partial x_2\\,\\partial x_1}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial^2 f}{\\partial {x_2}^2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial^2 f}{\\partial x_2\\, \\partial x_n}(\\mathbf{x}_\\mathbf{A})\\\\\n",
    "\\vdots && \\vdots && \\ddots && \\vdots \\\\\n",
    "\\dfrac{\\partial^2 f}{\\partial x_n\\,\\partial x_1}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dfrac{\\partial^2 f}{\\partial x_n\\,\\partial x_2}(\\mathbf{x}_\\mathbf{A})\n",
    "&& \\dots\n",
    "&& \\dfrac{\\partial^2 f}{\\partial {x_n}^2}(\\mathbf{x}_\\mathbf{A})\\\\\n",
    "\\end{pmatrix}\n",
    "$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "PS5P5-frqleX"
   },
   "source": [
    "There are great optimization algorithms which take advantage of the Hessians, but in practice Deep Learning almost never uses them. Indeed, if a function has $n$ variables, there are $n^2$ Hessians: since neural networks typically have several millions of parameters, the number of Hessians would exceed thousands of billions. Even if we had the necessary amount of RAM, the computations would be prohibitively slow."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "IOpOUgSyWhou"
   },
   "source": [
    "## A few proofs\n",
    "\n",
    "Let's finish by proving all the derivative rules we listed earlier. You don't have to go through all these proofs to be a good Deep Learning practitioner, but it may help you get a deeper understanding of derivatives."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "vdbMt5GSW2og"
   },
   "source": [
    "## Constant: $f(x)=c$\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{c - c}{\\epsilon} && \\quad \\text{using }f(x) = c \\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim 0 && \\quad \\text{since }c - c = 0\\\\\n",
    "&& = 0 && \\quad \\text{since the limit of a constant is that constant}\n",
    "\\end{split}\n",
    "$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "f6XsnZ_FGMpN"
   },
   "source": [
    "## Product rule: $f(x)=g(x)h(x)$\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon)h(x+\\epsilon) - g(x)h(x)}{\\epsilon} && \\quad \\text{using }f(x) = g(x)h(x) \\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon)h(x+\\epsilon) - g(x)h(x+\\epsilon) + g(x)h(x + \\epsilon) - g(x)h(x)}{\\epsilon} && \\quad \\text{subtracting and adding }g(x)h(x + \\epsilon)\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x+\\epsilon)h(x+\\epsilon) - g(x)h(x+\\epsilon)}{\\epsilon} + \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(x)h(x + \\epsilon) - g(x)h(x)}{\\epsilon} && \\quad \\text{since the limit of a sum is the sum of the limits}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon}h(x+\\epsilon)\\right]} \\,+\\, \\underset{\\epsilon \\to 0}\\lim{\\left[g(x)\\dfrac{h(x + \\epsilon) - h(x)}{\\epsilon}\\right]} && \\quad \\text{factorizing }h(x+\\epsilon) \\text{ and } g(x)\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon}h(x+\\epsilon)\\right]} \\,+\\, g(x)\\underset{\\epsilon \\to 0}\\lim{\\dfrac{h(x + \\epsilon) - h(x)}{\\epsilon}} && \\quad \\text{taking } g(x) \\text{ out of the limit since it does not depend on }\\epsilon\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon}h(x+\\epsilon)\\right]} \\,+\\, g(x)h'(x) && \\quad \\text{using the definition of h'(x)}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon}\\right]}\\underset{\\epsilon \\to 0}\\lim{h(x+\\epsilon)} + g(x)h'(x) && \\quad \\text{since the limit of a product is the product of the limits}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(x+\\epsilon) - g(x)}{\\epsilon}\\right]}h(x) + h(x)g'(x) && \\quad \\text{since } h(x) \\text{ is continuous}\\\\\n",
    "&& = g'(x)h(x) + g(x)h'(x) && \\quad \\text{using the definition of }g'(x)\n",
    "\\end{split}\n",
    "$\n",
    "\n",
    "Note that if $g(x)=c$ (a constant), then $g'(x)=0$, so the equation simplifies to:\n",
    "\n",
    "$f'(x)=c \\, h'(x)$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "l_qgG_SjOEyD"
   },
   "source": [
    "## Chain rule: $f(x)=g(h(x))$\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{g(h(x+\\epsilon)) - g(h(x))}{\\epsilon} && \\quad \\text{using }f(x) = g(h(x))\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{h(x+\\epsilon)-h(x)}{h(x+\\epsilon)-h(x)}\\,\\dfrac{g(h(x+\\epsilon)) - g(h(x))}{\\epsilon}\\right]} && \\quad \\text{multiplying and dividing by }h(x+\\epsilon) - h(x)\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{h(x+\\epsilon)-h(x)}{\\epsilon}\\,\\dfrac{g(h(x+\\epsilon)) - g(h(x))}{h(x+\\epsilon)-h(x)}\\right]} && \\quad \\text{swapping the denominators}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{h(x+\\epsilon)-h(x)}{\\epsilon}\\right]} \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(h(x+\\epsilon)) - g(h(x))}{h(x+\\epsilon)-h(x)}\\right]} && \\quad \\text{the limit of a product is the product of the limits}\\\\\n",
    "&& = h'(x) \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(h(x+\\epsilon)) - g(h(x))}{h(x+\\epsilon)-h(x)}\\right]} && \\quad \\text{using the definition of }h'(x)\\\\\n",
    "&& = h'(x) \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{g(u) - g(v)}{u-v}\\right]} && \\quad \\text{using }u=h(x+\\epsilon) \\text{ and } v=h(x)\\\\\n",
    "&& = h'(x) \\underset{u \\to v}\\lim{\\left[\\dfrac{g(u) - g(v)}{u-v}\\right]} && \\quad \\text{ since } h \\text{ is continuous, so } \\underset{\\epsilon \\to 0}\\lim{u}=v\\\\\n",
    "&& = h'(x)g'(v) && \\quad \\text{ using the definition of } g'(v)\\\\\n",
    "&& = h'(x)g'(h(x)) && \\quad \\text{ since } v = h(x)\n",
    "\\end{split}\n",
    "$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "bRimto0DexEG"
   },
   "source": [
    "## Exponential: $f(x)=\\exp(x)=e^x$\n",
    "\n",
    "There are several equivalent definitions of the number $e$. One of them states that $e$ is the unique positive number for which $\\underset{\\epsilon \\to 0}\\lim{\\dfrac{e^\\epsilon - 1}{\\epsilon}}=1$. We will use this in this proof:\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{e^{x+\\epsilon} - e^x}{\\epsilon} && \\quad \\text{using }f(x) = e^x\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{e^x e^\\epsilon - e^x}{\\epsilon} && \\quad \\text{using the fact that } x^{a+b}=x^a x^b\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[e^x\\dfrac{e^\\epsilon - 1}{\\epsilon}\\right]} && \\quad \\text{factoring out }e^x\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{e^x} \\, \\underset{\\epsilon \\to 0}\\lim{\\dfrac{e^\\epsilon - 1}{\\epsilon}} && \\quad \\text{the limit of a product is the product of the limits}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{e^x} && \\quad \\text{since }\\underset{\\epsilon \\to 0}\\lim{\\dfrac{e^\\epsilon - 1}{\\epsilon}}=1\\\\\n",
    "&& = e^x && \\quad \\text{since } e^x \\text{ does not depend on }\\epsilon\n",
    "\\end{split}\n",
    "$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ddqGVIxKkPga"
   },
   "source": [
    "## Logarithm: $f(x) = \\ln(x)$\n",
    "\n",
    "Another definition of the number $e$ is:\n",
    "\n",
    "$e = \\underset{n \\to \\infty}\\lim\\left(1+\\dfrac{1}{n}\\right)^n$\n",
    "\n",
    "By defining $\\epsilon = \\dfrac{1}{n}$, we can rewrite the previous definition as:\n",
    "\n",
    "$e = \\underset{\\epsilon \\to 0}\\lim\\left(1+\\epsilon\\right)^{1/\\epsilon}$\n",
    "\n",
    "This will come in handy in a second:\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\epsilon \\to 0}\\lim\\dfrac{f(x+\\epsilon) - f(x)}{\\epsilon} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{\\ln(x+\\epsilon) - \\ln(x)}{\\epsilon} && \\quad \\text{using }f(x) = \\ln(x)\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim\\dfrac{\\ln\\left(\\dfrac{x+\\epsilon}{x}\\right)}{\\epsilon} && \\quad \\text{since }\\ln(a)-\\ln(b)=\\ln\\left(\\dfrac{a}{b}\\right)\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{1}{\\epsilon} \\, \\ln\\left(1 + \\dfrac{\\epsilon}{x}\\right)\\right]} && \\quad \\text{just moving things around a bit}\\\\\n",
    "&& = \\underset{\\epsilon \\to 0}\\lim{\\left[\\dfrac{1}{xu} \\, \\ln\\left(1 + u\\right)\\right]} && \\quad \\text{defining }u=\\dfrac{\\epsilon}{x} \\text{ and thus } \\epsilon=xu\\\\\n",
    "&& = \\underset{u \\to 0}\\lim{\\left[\\dfrac{1}{xu} \\, \\ln\\left(1 + u\\right)\\right]} && \\quad \\text{replacing } \\underset{\\epsilon \\to 0}\\lim \\text{ with } \\underset{u \\to 0}\\lim \\text{ since }\\underset{\\epsilon \\to 0}\\lim u=0\\\\\n",
    "&& = \\underset{u \\to 0}\\lim{\\left[\\dfrac{1}{x} \\, \\ln\\left((1 + u)^{1/u}\\right)\\right]} && \\quad \\text{since }a\\ln(b)=\\ln(a^b)\\\\\n",
    "&& = \\dfrac{1}{x}\\underset{u \\to 0}\\lim{\\left[\\ln\\left((1 + u)^{1/u}\\right)\\right]} && \\quad \\text{taking }\\dfrac{1}{x} \\text{ out since it does not depend on }\\epsilon\\\\\n",
    "&& = \\dfrac{1}{x}\\ln\\left(\\underset{u \\to 0}\\lim{(1 + u)^{1/u}}\\right) && \\quad \\text{taking }\\ln\\text{ out since it is a continuous function}\\\\\n",
    "&& = \\dfrac{1}{x}\\ln(e) && \\quad \\text{since }e=\\underset{u \\to 0}\\lim{(1 + u)^{1/u}}\\\\\n",
    "&& = \\dfrac{1}{x} && \\quad \\text{since }\\ln(e)=1\n",
    "\\end{split}\n",
    "$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Vp8dwDsrq6Tn"
   },
   "source": [
    "## Power rule: $f(x)=x^r$, with $r \\neq 0$\n",
    "\n",
    "Let's define $g(x)=e^x$ and $h(x)=\\ln(x^r)$. Since $a = e^{\\ln(a)}$, we can rewrite $f$ as $f(x)=g(h(x))$, which allows us to use the chain rule:\n",
    "\n",
    "$f'(x) = h'(x)g'(h(x))$\n",
    "\n",
    "We know the derivative of the exponential: $g'(x)=e^x$. We also know the derivative of the natural logarithm: $\\ln'(x)=\\dfrac{1}{x}$ so $h'(x)=\\dfrac{r}{x}$. Therefore:\n",
    "\n",
    "$f'(x) = \\dfrac{r}{x}\\exp\\left({\\ln(x^r)}\\right)$\n",
    "\n",
    "Since $a = \\exp(\\ln(a))$, this equation simplifies to:\n",
    "\n",
    "$f'(x) = \\dfrac{r}{x} x^r$\n",
    "\n",
    "And finally:\n",
    "\n",
    "$f'(x) = rx^{r - 1}$\n",
    "\n",
    "Note that the power rule works for any $r \\neq 0$, including negative numbers and real numbers. For example:\n",
    "\n",
    "* if $f(x) = \\dfrac{1}{x} = x^{-1}$, then $f'(x)=-x^{-2}=-\\dfrac{1}{x^2}$.\n",
    "* if $f(x) = \\sqrt(x) = x^{1/2}$, then $f'(x)=\\dfrac{1}{2}x^{-1/2}=\\dfrac{1}{2\\sqrt{x}}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "tgj5_lMHX3mG"
   },
   "source": [
    "## Multiplicative inverse: $f(x)=\\dfrac{1}{h(x)}$\n",
    "First, let's define $g(x) = \\dfrac{1}{x}$. This leads to $f(x)=g(h(x))$.\n",
    "Now we can use the chain rule:\n",
    "\n",
    "$f'(x) = h'(x)g'(h(x))$\n",
    "\n",
    "Since $g(x)=x^{-1}$, we can use the power rule to find $g'(x)=-\\dfrac{1}{x^2}$\n",
    "\n",
    "Finally, we get:\n",
    "\n",
    "$f'(x) = -\\dfrac{h'(x)}{h^2(x)}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "8xeXRy13czHW"
   },
   "source": [
    "## Quotient rule: $f(x)=\\dfrac{g(x)}{h(x)}$\n",
    "\n",
    "Let's rewrite $f(x)$ as a product: $f(x)=g(x)u(x)$ with $u(x)=\\dfrac{1}{h(x)}$\n",
    "\n",
    "We can now use the product rule to get:\n",
    "\n",
    "$f(x) = g'(x)u(x) + g(x)u'(x)$\n",
    "\n",
    "Replacing $u(x)$ with $\\dfrac{1}{h(x)}$ and using the result of the previous section to replace $u'(x)$ with $\\dfrac{-h'(x)}{h^2(x)}$, we get:\n",
    "\n",
    "$f(x) = g'(x)\\dfrac{1}{h(x)} + g(x)\\dfrac{-h'(x)}{h^2(x)}$\n",
    "\n",
    "Now we multiply and divide the first term by $h(x)$:\n",
    "\n",
    "$f(x) = \\dfrac{g'(x)h(x)}{h^2(x)} - \\dfrac{g(x)h'(x)}{h^2(x)}$\n",
    "\n",
    "And finally:\n",
    "\n",
    "$f(x) = \\dfrac{g'(x)h(x) - g(x)h'(x)}{h^2(x)}$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "3vlr8D3VdAYd"
   },
   "source": [
    "## Sin: $f(x)=\\sin(x)$\n",
    "\n",
    "For this proof we will first need to prove that $\\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta}=1$. One way to do that is to consider the following diagram:\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "cellView": "form",
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 357
    },
    "colab_type": "code",
    "id": "dDEQiqFFowrb",
    "outputId": "0c3c302d-5593-457a-b82e-6ac7c0f48b5a"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#@title\n",
    "angle = np.pi/5\n",
    "A_pos = [np.cos(angle), np.sin(angle)]\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(6, 6))\n",
    "\n",
    "from functools import partial\n",
    "ax_text = partial(ax.text, color=\"w\", fontsize=18, zorder=4,\n",
    "                  horizontalalignment='center', verticalalignment='center')\n",
    "\n",
    "circle = plt.Circle((0, 0), 1,\n",
    "                    zorder=0, facecolor='w', edgecolor='k', linestyle=\"--\")\n",
    "triangle1 = plt.Polygon([[0, 0], [1, np.tan(angle)], [1, 0]],\n",
    "                        zorder=1, facecolor='r', edgecolor='k')\n",
    "arc_points = np.array([[0, 0]] + [[np.cos(a), np.sin(a)] \n",
    "              for a in np.linspace(0, angle, 50)])\n",
    "ax.fill(arc_points[:, 0], arc_points[:, 1],\n",
    "        zorder=2, facecolor='c', edgecolor='k')\n",
    "triangle2 = plt.Polygon([[0, 0], A_pos, [A_pos[0], 0]],\n",
    "                        zorder=3, facecolor='b', edgecolor='k')\n",
    "ax_text(2*np.cos(angle)/3, np.sin(angle)/4, \"A\")\n",
    "ax_text((1+np.cos(angle))/2, np.sin(angle)/4, \"B\")\n",
    "ax_text((1+np.cos(angle))/2, 0.9*np.sin(angle), \"C\")\n",
    "ax_text(0.25*np.cos(angle/2), 0.25*np.sin(angle/2), r\"$\\theta$\")\n",
    "arc = mpl.patches.Arc([0, 0], 2*0.2, 2*0.2, theta1=0, theta2=angle*180/np.pi,\n",
    "                      zorder=5, color='y', linewidth=3)\n",
    "ax_text(0.03, -0.05, \"0\", color='k')\n",
    "ax_text(1.03, -0.05, \"1\", color='k')\n",
    "\n",
    "ax.axhline(y=0, color='k', zorder=4)\n",
    "ax.axvline(x=0, color='k', zorder=4)\n",
    "ax.axvline(x=1, color='k', zorder=4, linewidth=1, linestyle='--')\n",
    "ax.axis('equal')\n",
    "ax.axis([-0.1, 1.1, -0.1, 1.1])\n",
    "ax.axis('off')\n",
    "ax.add_artist(circle)\n",
    "ax.add_artist(triangle1)\n",
    "ax.add_artist(triangle2)\n",
    "ax.add_patch(arc)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "0w_55TJGUMxe"
   },
   "source": [
    "The circle is the unit circle (radius=1).\n",
    "\n",
    "Assuming $0 < \\theta < \\dfrac{\\pi}{2}$, the area of the blue triangle (area $\\mathrm{A}$) is equal to its height ($\\sin(\\theta)$), times its base ($\\cos(\\theta)$), divided by 2. So $\\mathrm{A} = \\dfrac{1}{2}\\sin(\\theta)\\cos(\\theta)$.\n",
    "\n",
    "The unit circle has an area of $\\pi$, so the circular sector (in the shape of a pizza slice) has an area of A + B = $\\pi\\dfrac{\\theta}{2\\pi} = \\dfrac{\\theta}{2}$.\n",
    "\n",
    "Next, the large triangle (A + B + C) has an area equal to its height ($\\tan(\\theta)$) multiplied by its base (1) divided by 2, so A + B + C = $\\dfrac{\\tan(\\theta)}{2}$.\n",
    "\n",
    "When $0 < \\theta < \\dfrac{\\pi}{2}$, we have $\\mathrm{A} < \\mathrm{A} + \\mathrm{B} < \\mathrm{A} + \\mathrm{B} + \\mathrm{C}$, therefore:\n",
    "\n",
    "$\\dfrac{1}{2}\\sin(\\theta)\\cos(\\theta) < \\dfrac{\\theta}{2} < \\dfrac{\\tan(\\theta)}{2}$\n",
    "\n",
    "We can multiply all the terms by 2 to get rid of the $\\dfrac{1}{2}$ factors. We can also divide by $\\sin(\\theta)$, which is stricly positive (assuming $0 < \\theta < \\dfrac{\\pi}{2}$), so the inequalities still hold:\n",
    "\n",
    "$cos(\\theta) < \\dfrac{\\theta}{\\sin(\\theta)} < \\dfrac{\\tan(\\theta)}{\\sin(\\theta)}$\n",
    "\n",
    "Recall that $\\tan(\\theta)=\\dfrac{\\sin(\\theta)}{\\cos(\\theta)}$, so the last term simplifies like so:\n",
    "\n",
    "$cos(\\theta) < \\dfrac{\\theta}{\\sin(\\theta)} < \\dfrac{1}{\\cos(\\theta)}$\n",
    "\n",
    "Since all these terms are strictly positive when $0 < \\theta < \\dfrac{\\pi}{2}$, we can take their inverse and change the direction of the inequalities:\n",
    "\n",
    "<hr />\n",
    "\n",
    "**Inequalities (1)**\n",
    "\n",
    "$\\dfrac{1}{cos(\\theta)} > \\dfrac{\\sin(\\theta)}{\\theta} > \\cos(\\theta)$\n",
    "\n",
    "assuming $0 < \\theta < \\dfrac{\\pi}{2}$\n",
    "<hr />\n",
    "\n",
    "Now since $\\sin(-\\theta)=-\\sin(\\theta)$, we see that $\\dfrac{\\sin(-\\theta)}{-\\theta}=\\dfrac{\\sin(\\theta)}{\\theta}$. Moreover, $\\cos(-\\theta)=\\cos(\\theta)$, and therefore $\\dfrac{1}{\\cos(-\\theta)}=\\dfrac{1}{\\cos(\\theta)}$. Replacing the terms in the inequalities (1), we get:\n",
    "\n",
    "$\\dfrac{1}{cos(-\\theta)} > \\dfrac{\\sin(-\\theta)}{-\\theta} > \\cos(-\\theta)$\n",
    "\n",
    "assuming $0 < \\theta < \\dfrac{\\pi}{2}$\n",
    "\n",
    "In other words, the inequalities (1) also hold for $-\\dfrac{\\pi}{2} < \\theta < 0$:\n",
    "\n",
    "<hr />\n",
    "\n",
    "**Inequalities (2)**\n",
    "\n",
    "$\\dfrac{1}{cos(\\theta)} > \\dfrac{\\sin(\\theta)}{\\theta} > \\cos(\\theta)$\n",
    "\n",
    "assuming $-\\dfrac{\\theta}{2} < \\theta < \\dfrac{\\pi}{2}$ and $\\theta \\neq 0$\n",
    "<hr />\n",
    "\n",
    "Since $\\cos$ is a continuous function, $\\underset{\\theta \\to 0}\\lim\\cos(\\theta)=\\cos(0)=1$. Similarly, $\\underset{\\theta \\to 0}\\lim\\dfrac{1}{cos(\\theta)}=\\dfrac{1}{\\cos(0)}=1$.\n",
    "\n",
    "Since the inequalities (2) tell us that $\\dfrac{\\sin(\\theta)}{\\theta}$ is squeezed between $\\dfrac{1}{cos(\\theta)}$ and $\\cos(\\theta)$ when $\\theta$ is close to 0, and since both of these approach 1 when $\\theta$ approaches 0, we can use the **squeeze theorem** (also called the **sandwich theorem**) to conclude that $\\dfrac{\\sin(\\theta)}{\\theta}$ must also approach 1 when $\\theta$ approaches 0.\n",
    "\n",
    "<hr />\n",
    "\n",
    "We have proven that:\n",
    "\n",
    "$\\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta}=1$\n",
    "\n",
    "<hr />"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "VazHS7zeifmv"
   },
   "source": [
    "Now the second thing we need to prove before we can tackle the derivative of the $\\sin$ function is the fact that $\\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta}=0$. Here we go:\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "\\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta} && =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta}\\frac{\\cos(\\theta) + 1}{\\cos(\\theta) + 1} && \\quad \\text{ multiplying and dividing by }\\cos(\\theta)+1\\\\\n",
    "&& =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\cos^2(\\theta) - 1}{\\theta(\\cos(\\theta) + 1)} && \\quad \\text{ since }(a-1)(a+1)=a^2-1\\\\\n",
    "&& =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin^2(\\theta)}{\\theta(\\cos(\\theta) + 1)} && \\quad \\text{ since }\\cos^2(\\theta) - 1 = \\sin^2(\\theta)\\\\\n",
    "&& =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta}\\dfrac{\\sin(\\theta)}{\\cos(\\theta) + 1} && \\quad \\text{ just rearranging the terms}\\\\\n",
    "&& =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta} \\, \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\cos(\\theta) + 1} && \\quad \\text{ since the limit of a product is the product of the limits}\\\\\n",
    "&& =  \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\cos(\\theta) + 1} && \\quad \\text{ since } \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta}=1\\\\\n",
    "&& =  \\dfrac{0}{1+1} && \\quad \\text{ since } \\underset{\\theta \\to 0}\\lim\\sin(\\theta)=0 \\text{ and } \\underset{\\theta \\to 0}\\lim\\cos(\\theta)=1\\\\\n",
    "&& =  0\\\\\n",
    "\\end{split}\n",
    "$\n",
    "\n",
    "<hr />\n",
    "\n",
    "We have proven that:\n",
    "\n",
    "$\\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta}=0$\n",
    "\n",
    "<hr />"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "T1fYGYy2lO-f"
   },
   "source": [
    "With all that, we are finally ready to prove the fact that the derivative of the $\\sin$ function is the $\\cos$ function:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Qg1q6fdlou9m"
   },
   "source": [
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\theta \\to 0}\\lim\\dfrac{f(x+\\theta) - f(x)}{\\theta} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(x+\\theta) - \\sin(x)}{\\theta} && \\quad \\text{using }f(x) = \\sin(x)\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(x)\\sin(\\theta) + \\sin(x)\\cos(\\theta) - \\sin(x)}{\\theta} && \\quad \\text{since } cos(a+b)=\\cos(a)\\sin(b)+\\sin(a)\\cos(b)\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(x)\\sin(\\theta)}{\\theta} + \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(x)\\cos(\\theta) - \\sin(x)}{\\theta} && \\quad \\text{since the limit of a sum is the sum of the limits}\\\\\n",
    "&& = \\cos(x)\\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta} + \\sin(x)\\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta} && \\quad \\text{bringing out } \\cos(x) \\text{ and } \\sin(x) \\text{ since they don't depend on }\\theta\\\\\n",
    "&& = \\cos(x)\\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta} && \\quad \\text{since }\\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(\\theta) - 1}{\\theta}=0\\\\\n",
    "&& = \\cos(x) && \\quad \\text{since }\\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(\\theta)}{\\theta}=1\\\\\n",
    "\\end{split}\n",
    "$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "oSZq5EGNn6ER"
   },
   "source": [
    "## Cosine: $f(x)=\\cos(x)$\n",
    "\n",
    "Since we have proven that $\\sin'(x)=\\cos(x)$, proving that $\\cos'(x)=-\\sin(x)$ will be much easier.\n",
    "\n",
    "$\n",
    "\\begin{split}\n",
    "f'(x) && = \\underset{\\theta \\to 0}\\lim\\dfrac{f(x+\\theta) - f(x)}{\\theta} && \\quad\\text{by definition}\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\cos(x+\\theta) - \\cos(x)}{\\theta} && \\quad \\text{using }f(x) = \\cos(x)\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin\\left(x+\\dfrac{\\pi}{2}+\\theta\\right) - \\sin\\left(x+\\dfrac{\\pi}{2}\\right)}{\\theta} && \\quad \\text{since }\\cos(x) = \\sin\\left(x+\\dfrac{\\pi}{2}\\right)\\\\\n",
    "&& = \\underset{\\theta \\to 0}\\lim\\dfrac{\\sin(z+\\theta) - \\sin(z)}{\\theta} && \\quad \\text{using }z = x + \\dfrac{\\pi}{2}\\\\\n",
    "&& = \\sin'(z) && \\quad \\text{using the definition of }\\sin'(z)\\\\\n",
    "&& = \\cos(z) && \\quad \\text{since we proved that }\\sin'(z)=\\cos(z)\\\\\n",
    "&& = \\cos\\left(x + \\dfrac{\\pi}{2}\\right) && \\quad \\text{using the definition of }z\\\\\n",
    "&& = -\\sin(x) && \\quad \\text{using this well-known rule of trigonometry}\n",
    "\\end{split}\n",
    "$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "nwzF_EXtqqe1"
   },
   "source": [
    "## Tangent: $f(x) = \\tan(x)$\n",
    "\n",
    "Since $\\tan(x)=\\dfrac{\\sin(x)}{\\cos(x)}$, we can use the quotient rule to get:\n",
    "\n",
    "$f'(x) = \\dfrac{\\sin'(x)\\cos(x) - \\sin(x)\\cos'(x)}{\\cos^2(x)}$\n",
    "\n",
    "Since $\\sin'(x)=\\cos(x)$ and $\\cos'(x)=-\\sin(x)$, we get:\n",
    "\n",
    "$f'(x) = \\dfrac{\\cos^2(x) + \\sin^2(x)}{\\cos^2(x)}$\n",
    "\n",
    "And finally, since $\\cos^2(x) + \\sin^2(x) = 1$, we get:\n",
    "\n",
    "$f'(x) = \\dfrac{1}{\\cos^2(x)}$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "math_differential_calculus",
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "metadata": {
     "collapsed": false
    },
    "source": []
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
